在 C++ 中,std::sort 和 std::stable_sort 都是标准库中的排序算法,它们都可以对给定范围内的元素进行排序。然而,它们在排序稳定性上有所不同:
std::sort:
std::sort 是一种快速排序算法的实现,它不保证排序是稳定的。这意味着相等元素之间的相对顺序在排序后可能会改变。
std::stable_sort:
std::stable_sort 是一种稳定的排序算法,通常是基于归并排序的实现。它保证相等元素之间的相对顺序在排序后不会改变。
用法:
sort函数的参数:可以传两个参数或三个参数。
第一个参数:要排序的区间首地址,
第二个参数:区间尾地址的下一地址。也就是说,排序的区间是[a,b)。
例如:数组int a[100],sort(a,a+100)是对从a[0]到a[99]的元素进行排序,默认的排序方式是升序。 对向量v排序:sort(v.begin(),v.end());
排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string。
第三参数:比较函数。如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数的比较函数。比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是“小于”。
// 使用sort函数对数组进行降序排序
std::sort(arr, arr + N, std::greater<int>());
// 使用sort函数对vector进行降序排序
std::sort(numbers.begin(), numbers.end(), std::greater<int>());
参数都是一样的,只不过对数组,对向量不一样罢了