跳转至

排序

sort

函数原型:

template <class _RanIt, class _Pr>
void sort(const _RanIt _First, const _RanIt _Last, _Pr _Pred);

用途:对指定左闭右开区间进行排序,_Pred 为规则的对象,可以传入函数或者重载了圆括号的对象,若不填默认以小于号排序。注意给定的迭代器必须具备可随机访问的特性。

如果你想要对自己的结构体 / 类进行排序,那么可以定义一个函数 / Lambda 来指定排序规则,或者是直接在你自己的结构体里面重载小于号运算符。

底层使用快速排序和堆排序实现,没有稳定性。在 C++11 之后,在标准中制定快速排序的最坏时间复杂度不得超过 \(\mathcal O(n\log_2 n)\)

stable_sort

函数原型:

template <class _BidIt, class _Pr>
void stable_sort(const _BidIt _First, const _BidIt _Last, _Pr _Pred);

用途:对指定左闭右开区间进行排序,_Pred 为规则的对象,可以传入函数或者重载了圆括号的对象,若不填默认以小于号排序。注意给定的迭代器必须具备可双向顺序访问的特性。

如果你想要对自己的结构体 / 类进行排序,那么可以定义一个函数 / Lambda 来指定排序规则,或者是直接在你自己的结构体里面重载小于号运算符。

底层使用归并排序实现,有稳定性。时间复杂度严格 \(\mathcal O(n\log_2 n)\)

评论