C++ sort(),stable_sort()和partial_sort()
2015-07-29 12:15
465 查看
写了那么多的排序,但是其实C++里封装有排序函数,而且功能非常强大。
sort函数有sort(),stable_sort()和partial_sort()。sort()函数是对给定区间的元素进行排序,stable_sort()是对给定区间的元素进行稳定排序,如果两个元素相等,那么排序完成后两个元素的相对位置保持不变,partial_sort()是对给定区间的元素进行部分排序。默认的顺序是由小到大进行排序。
下面是三个函数的使用示例:
1 sort()
sort函数有sort(),stable_sort()和partial_sort()。sort()函数是对给定区间的元素进行排序,stable_sort()是对给定区间的元素进行稳定排序,如果两个元素相等,那么排序完成后两个元素的相对位置保持不变,partial_sort()是对给定区间的元素进行部分排序。默认的顺序是由小到大进行排序。
下面是三个函数的使用示例:
1 sort()
#include <iostream> // std::cout #include <algorithm> // std::sort #include <vector> // std::vector bool myfunction (int i,int j) { return (i<j); } struct myclass { bool operator() (int i,int j) { return (i<j);} } myobject; int main () { int myints[] = {32,71,12,45,26,80,53,33}; std::vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33 // using default comparison (operator <): std::sort (myvector.begin(), myvector.begin()+4); //(12 32 45 71)26 80 53 33 // using function as comp std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80) // using object as comp std::sort (myvector.begin(), myvector.end(), myobject); //(12 26 32 33 45 53 71 80) // print out content: std::cout << "myvector contains:"; for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }2 stable_sort()
#include <iostream> // std::cout #include <algorithm> // std::stable_sort #include <vector> // std::vector bool compare_as_ints (double i,double j) { return (int(i)<int(j)); } int main () { double mydoubles[] = {3.14, 1.41, 2.72, 4.67, 1.73, 1.32, 1.62, 2.58}; std::vector<double> myvector; myvector.assign(mydoubles,mydoubles+8); std::cout << "using default comparison:"; std::stable_sort (myvector.begin(), myvector.end()); for (std::vector<double>::iterator it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; myvector.assign(mydoubles,mydoubles+8); std::cout << "using 'compare_as_ints' :"; std::stable_sort (myvector.begin(), myvector.end(), compare_as_ints); for (std::vector<double>::iterator it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }3 partial_sort()
#include <iostream> // std::cout #include <algorithm> // std::partial_sort #include <vector> // std::vector bool myfunction (int i,int j) { return (i<j); } int main () { int myints[] = {9,8,7,6,5,4,3,2,1}; std::vector<int> myvector (myints, myints+9); // using default comparison (operator <): std::partial_sort (myvector.begin(), myvector.begin()+5, myvector.end()); // using function as comp std::partial_sort (myvector.begin(), myvector.begin()+5, myvector.end(),myfunction); // print out content: std::cout << "myvector contains:"; for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }
相关文章推荐
- 写对称字母塔的时候,程序看起来都很复杂,但一步一步来,总是可以解决的!这个过程需要耐心!
- C++ primer读书笔记 5
- C语言Printf格式
- [c++]MFC学习
- 华为机试2013届上机--子串分离
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- 关于c++的STL的学习与再认识(二)
- C语言陷阱与缺陷(5)
- 典型动态规划之Always On the Run
- 输入m和n,从1,2,3...n中找出和为m的组合
- 输入m和n,从1,2,3...n中找出和为m的组合
- C++堆和栈的区别
- VC++中的.ncb文件
- 几个论坛上看到的2015小米笔试题 分类: C/C++ 2015-07-29 10:51 15人阅读 评论(0) 收藏
- 【C++】求当前exe的运行路径
- 【C++】求数组中所有元素的排列或组合
- CPP
- c++字符串
- 为什么C++编译器不支持模板头文件和实现代码分离的编译