- 针对vector,可采用algorithm中sort
sort默认采用的是less函数,即递增排序。(主要针对标准类型:int char float sring,如果遇到自己定义的类型,有两种方法:1.重载“<”,2.重写比较函数);特别注意的是sort的范围区间是左闭右开。
例子:
bool cmp(int a,int b) { return a>b; } sort(vec.begin(), vec.end()); //默认less函数 sort(vec.begin(), vec.end(),cmp); //自己写的递减函数
稳定排序使用stable_sort(相等元素的原始位置保持不变)stable_sort(vec.begin(), vec.end());
局部排序,使用partition_sort(使用的堆排序)partial_sort(vec.begin(), vec.begin()+2, vec.end()); //注意:找到数列中最小的两个数(有序),<span style="color:#ff6666;">除了这两个数,其他数都是无序的。</span>
指定元素排序,使用nth_element
nth_element(vec.begin(), vec.begin()+2, vec.end()); //找到第3个小的,begin()是第一个,输出vec[2]即可,<span style="color:#ff6666;">它的前面和后面都是无序的。</span>