C++ STL 常见排序算法详解
1. sort
算法
- 功能:
sort
用于对容器内的元素进行升序排序。 - 示例代码:
#include <iostream> #include <algorithm> #include <vector> int main() { std::vector<int> numbers = {4, 2, 7, 1, 5}; std::sort(numbers.begin(), numbers.end()); for (int num : numbers) { std::cout << num << " "; } return 0; }
- 原理:
sort
基于快速排序算法实现,具有 O(n log n) 的时间复杂度。
2. merge
算法
- 功能:
merge
用于合并两个已排序的序列到一个新序列。 - 示例代码:
#include <iostream> #include <algorithm> #include <vector> int main() { std::vector<int> list1 = {1, 3, 5}; std::vector<int> list2 = {2, 4, 6}; std::vector<int> mergedList(list1.size() + list2.size()); std::merge(list1.begin(), list1.end(), list2.begin(), list2.end(), mergedList.begin()); for (int num : mergedList) { std::cout << num << " "; } return 0; }
- 原理:
merge
通过合并两个有序序列来创建一个新的有序序列,具有线性时间复杂度。
3. random_shuffle
算法
- 功能:
random_shuffle
用于随机打乱容器中元素的顺序。 - 示例代码:
#include <iostream> #include <algorithm> #include <vector> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; std::random_shuffle(numbers.begin(), numbers.end()); for (int num : numbers) { std::cout << num << " "; } return 0; }
- 原理:
random_shuffle
使用随机数生成器对容器中的元素进行重新排列。
4. reverse
算法
- 功能:
reverse
用于反转容器中元素的顺序。 - 示例代码:
#include <iostream> #include <algorithm> #include <vector> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; std::reverse(numbers.begin(), numbers.end()); for (int num : numbers) { std::cout << num << " "; } return 0; }
- 原理:
reverse
将容器中的元素逆序排列。