STL(Standard Template Library)提供了多种排序算法,每种算法都有其特定的应用场景和优势。主要的排序算法包括:
sort:
以升序重新排列指定范围内的元素,重载版本可以使用自定义的比较操作。
stable_sort:
与sort类似,但保证相等元素之间的相对位置不变。
partial_sort:
对指定范围的部分元素进行排序,通常用于获取前n个最小或最大的元素。
nth_element:
将范围内的序列重新排序,使所有小于第n个元素的元素都出现在它前面,而大于它的都出现在后面。
merge:
合并两个已排序的序列,结果同样是一个有序序列。
random_shuffle:
对指定范围内的元素进行随机调整次序。
使用示例
使用 `sort` 进行排序
```cpp
include
include include int main() { std::vector // 升序排序 std::sort(numbers.begin(), numbers.end()); // 输出排序后的结果 for (int num : numbers) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 使用 `stable_sort` 进行排序 ```cpp include include include bool compare(int a, int b) { return a < b; // 自定义比较函数,实现升序排序 } int main() { std::vector // 使用自定义比较函数进行升序排序 std::stable_sort(numbers.begin(), numbers.end(), compare); // 输出排序后的结果 for (int num : numbers) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 使用 `partial_sort` 获取前n个最小元素 ```cpp include include include int main() { std::vector std::vector // 获取前3个最小元素 std::partial_sort(numbers.begin(), numbers.end(), std::back_inserter(top_three), 3); // 输出前3个最小元素 for (int num : top_three) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 使用 `nth_element` 找出第n个元素 ```cpp include include include int main() { std::vector int nth = 2; std::nth_element(numbers.begin(), numbers.begin() + nth, numbers.end()); // 输出第2个元素 std::cout << numbers[nth] << std::endl; return 0; } ``` 使用 `merge` 合并两个已排序的序列 ```cpp include include include int main() { std::vector std::vector std::vector // 合并两个已排序的序列 std::merge(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(merged)); // 输出合并后的结果 for (int num : merged) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 使用 `random_