📜  C++ STL中的stable_sort()(1)

📅  最后修改于: 2023-12-03 14:39:52.135000             🧑  作者: Mango

C++ STL中的stable_sort()

在C++ STL库中,stable_sort()是一个用于对容器进行排序的算法,它的特点是能够保证相等元素的相对位置不变。本文将对stable_sort()进行详细介绍。

语法

stable_sort()的语法如下:

void stable_sort( RandomIt first, RandomIt last, Compare comp );

参数解释:

  • first: 排序的起始位置
  • last: 排序的终止位置
  • 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()是一个用于对容器进行排序的算法,它的特点是能够保证相等元素的相对位置不变。如果需要自定义排序规则,可以通过定义比较函数来实现。