C++标准库---sort()&stable_sort
2014-12-22 20:29
405 查看
sort(beg,end)
sort(beg,end,op)
stable(beg,end,)
stable(beg,end,op)
1.sort()与stable_sort()的上述第一形式,使用operator<对区间[beg,end)内的所有元素进行排序。
2.sort()与stable_sort()的上述第二形式,使用二元判断式op(elem1,elem2)作为排序准则,对区间[beg,end)内的所有元素进行排序。
3.sort()和stable_sort()的区别是,后者保证相等元素的原本相对次序在排序后保持不变。即stable_sort()是稳定排序。所谓稳定排序,是指对一个序列进行排序之后,如果两个元素的值相等,则原来乱序时在前面的元素现在(排好序之后)仍然排在前面。sort()没有这个承诺,而stable_sort()承诺了这一点。
4.不可以对list调用这些算法,因为list不支持随机存取迭代器,不过对于list,其自身带有成员函数,可以完成sort(),对其自身元素排序。
5.sort()的平均排序效能是nlogn,如果想避免可能出现的差情况,应该使用partial_sort()。
6.sort()内部使用快速排序,stable_sort()使用归并排序。
代码示例:
运行结果:
运行结果:
sort(beg,end,op)
stable(beg,end,)
stable(beg,end,op)
1.sort()与stable_sort()的上述第一形式,使用operator<对区间[beg,end)内的所有元素进行排序。
2.sort()与stable_sort()的上述第二形式,使用二元判断式op(elem1,elem2)作为排序准则,对区间[beg,end)内的所有元素进行排序。
3.sort()和stable_sort()的区别是,后者保证相等元素的原本相对次序在排序后保持不变。即stable_sort()是稳定排序。所谓稳定排序,是指对一个序列进行排序之后,如果两个元素的值相等,则原来乱序时在前面的元素现在(排好序之后)仍然排在前面。sort()没有这个承诺,而stable_sort()承诺了这一点。
4.不可以对list调用这些算法,因为list不支持随机存取迭代器,不过对于list,其自身带有成员函数,可以完成sort(),对其自身元素排序。
5.sort()的平均排序效能是nlogn,如果想避免可能出现的差情况,应该使用partial_sort()。
6.sort()内部使用快速排序,stable_sort()使用归并排序。
代码示例:
#include"fuzhu.h" using namespace std; int main() { deque<int> coll; INSERT_ELEMENTS(coll,1,9); INSERT_ELEMENTS(coll,1,9); PRINT_ELEMENTS(coll,"on entry: "); sort(coll.begin(),coll.end()); // [beg,end) 默认less < PRINT_ELEMENTS(coll,"sorted: "); sort(coll.begin(),coll.end(),greater<int>()); //[beg,end) greater > PRINT_ELEMENTS(coll,"sorted >: "); system("pause"); return 0; }
运行结果:
#include"fuzhu.h" using namespace std; struct Node { int value; int index; }; bool mycmp(const Node& a,const Node& b) { return a.value<b.value; } int main() { vector<Node> coll; vector<Node>::iterator pos; Node node; int va; for(int i=0;i<=8;i++) { cin>>va; node.value=va; node.index=i; coll.push_back(node); } stable_sort(coll.begin(),coll.end(),mycmp); //sort(coll.begin(),coll.end(),mycmp); cout<<"stable_sort: "<<endl; for(pos=coll.begin();pos!=coll.end();++pos) { cout<<pos->value<<" "<<pos->index<<endl; } system("pause"); return 0; }
运行结果:
相关文章推荐
- 泛型算法系列30:stable_partition()&amp;&amp;partition()&&stable_sort()
- 实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())
- C++标准库---partial_sort()&partial_sort_copy()
- Wiggle Sort I && II
- Summary: Merge Sort of Array && 求逆序对
- sort&qsort排序使用
- 如何sort&grep多台服务器上的日志
- LeetCode刷题系列(十五)Sums && Sort Colors
- hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法<转>
- LeetCode - 268. Missing Number - stable_sort应用实例 - ( C++ ) - 解题报告
- hdu5884-二分&k叉哈夫曼队列优化-Sort
- stable_sort()方法 与 sort()方法
- hadoop —— teragen & terasort
- 理解你的排序操作(stable_sort,sort,partial_sort,nth_element,stable_partition,partition)
- STL algorithm算法sort,stable_sort(55)
- <细节>C++标准库string类型
- MyEclipse 2016 Stable 1.0 keygen&crack
- STL_算法(27)_对所有元素排序sort(b, e) sort(b, e, p) stable_sort(b, e) stable_sort(b, e, p)
- ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15
- sort & qsrot