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

📅  最后修改于: 2023-12-03 15:13:56.698000             🧑  作者: Mango

C++ STL中的stable_sort()

在C++中,STL是一个强大的工具包,它提供了许多有用的数据结构和算法。其中,stable_sort()是一个用于排序的重要函数,它可以实现稳定排序,并且时间复杂度为O(NlogN)。

对于stable_sort()的解释

stable_sort()是C++ STL库中的一个函数,它可以按照给定的比较函数将数组或向量中的元素进行排序。它所排序的结果是稳定的,这意味着相同元素的相对位置不会改变。

函数的基本语法如下:

void stable_sort(Iterator first, Iterator last, Compare cmp);

其中,firstlast 是指向要排序的元素范围的迭代器(iterator),包括 first 不包括 lastcmp 是可选的,它是一个用于比较元素的函数。如果没有提供 cmp,它会默认使用 < 运算符进行比较。

使用stable_sort()排序

下面是一个简单的使用 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比较函数

下面是一个使用 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() 函数。