📅  最后修改于: 2023-12-03 15:13:56.698000             🧑  作者: Mango
在C++中,STL是一个强大的工具包,它提供了许多有用的数据结构和算法。其中,stable_sort()
是一个用于排序的重要函数,它可以实现稳定排序,并且时间复杂度为O(NlogN)。
stable_sort()
是C++ STL库中的一个函数,它可以按照给定的比较函数将数组或向量中的元素进行排序。它所排序的结果是稳定的,这意味着相同元素的相对位置不会改变。
函数的基本语法如下:
void stable_sort(Iterator first, Iterator last, Compare cmp);
其中,first
和 last
是指向要排序的元素范围的迭代器(iterator),包括 first
不包括 last
。cmp
是可选的,它是一个用于比较元素的函数。如果没有提供 cmp
,它会默认使用 <
运算符进行比较。
下面是一个简单的使用 stable_sort()
对整数数组进行排序的示例代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int arr[] = {4, 2, 8, 5, 1, 7, 6, 3};
int n = sizeof(arr) / sizeof(arr[0]);
stable_sort(arr, arr + n);
cout << "Sorted array: ";
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
return 0;
}
输出结果:
Sorted array: 1 2 3 4 5 6 7 8
下面是一个使用 cmp 函数自定义排序的示例代码:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int arr[] = {4, 2, 8, 5, 1, 7, 6, 3};
int n = sizeof(arr) / sizeof(arr[0]);
stable_sort(arr, arr + n, cmp);
cout << "Sorted array: ";
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
return 0;
}
输出结果:
Sorted array: 8 7 6 5 4 3 2 1
stable_sort()
函数是一个强大的排序函数,它可以实现稳定的排序,使用起来也非常简单。当需要按照特定的比较函数排序时,可以自己定义一个 cmp
函数,并作为参数传给 stable_sort()
函数。