【Cpp 基础】泛型算法 stable_sort() 的应用

发布时间 2023-12-09 20:29:46作者: FBshark

最近在刷牛客的题。经常遇到排序问题,经常有一个附加的规则:相同的数值的,按照录入的顺序排序。

可是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()解决这类问题