📅  最后修改于: 2023-12-03 14:39:52.135000             🧑  作者: Mango
在C++ STL库中,stable_sort()是一个用于对容器进行排序的算法,它的特点是能够保证相等元素的相对位置不变。本文将对stable_sort()进行详细介绍。
stable_sort()的语法如下:
void stable_sort( RandomIt first, RandomIt last, Compare comp );
参数解释:
stable_sort()可以对容器中的元素排序,保证相等元素的相对位置不变。它采用的是归并排序的方法,时间复杂度为O(n log n)。另外,stable_sort()是一个稳定的排序算法。
下面是一个使用stable_sort()进行排序的示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {3, 2, 1, 4, 3};
stable_sort(v.begin(), v.end());
for (auto i : v)
{
cout << i << " ";
}
return 0;
}
输出结果:
1 2 3 3 4
如果需要对容器中的元素按照一定的规则排序,可以自定义比较函数,指定给stable_sort()使用。比如,我们想要按照元素的绝对值大小对容器进行排序,可以实现以下自定义比较函数:
bool cmp(int a, int b)
{
return abs(a) < abs(b);
}
然后将该函数指定给stable_sort()函数即可:
stable_sort(v.begin(), v.end(), cmp);
stable_sort()是一个用于对容器进行排序的算法,它的特点是能够保证相等元素的相对位置不变。如果需要自定义排序规则,可以通过定义比较函数来实现。