【c++自带排序函数】在C++中,标准库提供了多种内置的排序函数,能够高效地对数组或容器中的元素进行排序。这些函数位于`
一、常用排序函数简介
函数名 | 功能说明 | 时间复杂度 | 是否稳定 | 使用场景 |
`sort()` | 对数组或容器进行快速排序 | O(n log n) | 不稳定 | 一般排序需求 |
`stable_sort()` | 对数组或容器进行稳定排序 | O(n log n) | 稳定 | 需要保持相同元素相对顺序 |
`qsort()` | C语言风格的快速排序函数 | O(n log n) | 不稳定 | 与C兼容的代码中使用 |
`partial_sort()` | 对部分元素进行排序 | O(n log k) | 不稳定 | 只需要前k个最小/最大元素 |
`nth_element()` | 将第n个元素置于正确位置 | O(n) | 不稳定 | 快速找到第n小的元素 |
二、函数用法简述
1. `sort()`
用于对数组或`vector`等容器进行排序,默认按升序排列。可以自定义比较函数。
```cpp
include
include
std::vector
std::sort(arr.begin(), arr.end());
```
2. `stable_sort()`
与`sort()`类似,但保证相等元素的相对顺序不变。
```cpp
std::stable_sort(arr.begin(), arr.end());
```
3. `qsort()`
C语言风格的排序函数,需传入比较函数指针,适用于C风格数组。
```cpp
int compare(const void a, const void b) {
return ((int)a - (int)b);
}
int arr[] = {5, 2, 9, 1};
qsort(arr, 4, sizeof(int), compare);
```
4. `partial_sort()`
对容器中的部分元素进行排序,常用于只关心前k个最小/最大值的情况。
```cpp
std::vector
std::partial_sort(arr.begin(), arr.begin() + 3, arr.end());
```
5. `nth_element()`
使第n个元素处于其在排序后的位置,其余元素无序,效率更高。
```cpp
std::vector
std::nth_element(arr.begin(), arr.begin() + 2, arr.end());
```
三、选择建议
- 如果只需要排序且不关心稳定性,使用`sort()`;
- 若需要保留相同元素的顺序,使用`stable_sort()`;
- 在C兼容代码中可使用`qsort()`;
- 当只需要部分排序结果时,使用`partial_sort()`或`nth_element()`更高效。
通过合理选择排序函数,可以在不同场景下提升程序的性能和可读性。掌握这些函数的使用方式,是C++开发者必备的基础技能之一。