最近在刷牛客的题。经常遇到排序问题,经常有一个附加的规则:相同的数值的,按照录入的顺序排序。
可是C++的sort()的底层是快速排序,并不能保证相同数值的顺序不改变。所以最后我不得不自己写冒泡排序。(冒泡排序不改变相同数值的录入顺序)
写了那么多的排序,但是其实C++里封装有排序函数,而且功能非常强大。
sort函数有sort(),stable_sort()和partial_sort()。sort()函数是对给定区间的元素进行排序,但是会改变值相同的元素的相对位置。stable_sort()是对给定区间的元素进行稳定排序,如果两个元素相等,那么排序完成后两个元素的相对位置保持不变,partial_sort()是对给定区间的元素进行部分排序。默认的顺序是由小到大进行排序。
三种函数的用法如下
v为容器
sort(v.begin(),v.begin()+4,comp);
sort(v.begin(),v.end(),comp);
stable_sort(v.begin(),v.end(),comp)
stable_sort的用法与sort类似
partial_sort(v.begin(),v.begin()+4,v.end());
partial_sort(v.begin(),v.begin()+4,v.end(),comp);
因此,以后可以用 stable_sort()解决这类问题
标签:sort,begin,partial,stable,泛型,end,排序 From: https://www.cnblogs.com/FBsharl/p/17891442.html