请用c++11写一个STL快速排序的代码
时间: 2024-05-08 16:19:11 浏览: 13
好的,以下是使用 C++ 11 实现的 STL 快速排序代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = {9, 7, 2, 5, 1, 8, 4, 6, 3};
sort(v.begin(), v.end());
for (auto& i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
这段代码使用 `vector` 存储要排序的整数序列,并使用 `sort` 函数进行排序。排序后,依次输出排序后的结果即可。
相关问题
c++STL中的快速排序函数
C++ STL中的快速排序函数是std::sort()。它是一个通用的排序算法,可以对各种容器进行排序,包括数组、向量、列表等。std::sort()函数使用快速排序算法来实现排序。
快速排序是一种高效的排序算法,它的基本思想是通过选择一个基准元素,将待排序序列分割成两个子序列,其中一个子序列的所有元素都小于基准元素,另一个子序列的所有元素都大于基准元素。然后对这两个子序列分别进行递归排序,最终得到有序序列。
std::sort()函数的使用非常简单,只需要包含<algorithm>头文件,并调用该函数即可。例如,对一个整型数组进行排序的示例代码如下:
```cpp
#include <algorithm>
#include <iostream>
int main() {
int arr[] = {5, 2, 9, 1, 7};
int size = sizeof(arr) / sizeof(arr[0]);
std::sort(arr, arr + size);
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
```
上述代码中,我们使用std::sort()函数对整型数组arr进行排序,并通过循环输出排序后的结果。
用c++编程, 用STL的容器vector和partition实现快速排序功能并逐句解释代码
好的,下面是用C++编程,用STL的容器vector和partition实现快速排序功能的代码,并逐句解释:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void quick_sort(vector<int>& nums, int left, int right);
int partition(vector<int>& nums, int left, int right);
int main() {
vector<int> nums = {5, 1, 3, 8, 4, 2, 9, 6, 7};
quick_sort(nums, 0, nums.size() - 1);
for (int num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
void quick_sort(vector<int>& nums, int left, int right) {
if (left < right) {
int pivot = partition(nums, left, right);
quick_sort(nums, left, pivot - 1);
quick_sort(nums, pivot + 1, right);
}
}
int partition(vector<int>& nums, int left, int right) {
int pivot = nums[right];
int i = left;
for (int j = left; j < right; ++j) {
if (nums[j] < pivot) {
swap(nums[i], nums[j]);
++i;
}
}
swap(nums[i], nums[right]);
return i;
}
```
- `#include <iostream>` 用于输入输出流。
- `#include <vector>` 用于使用vector容器。
- `#include <algorithm>` 用于使用swap函数。
- `using namespace std;` 使用命名空间std。
- `void quick_sort(vector<int>& nums, int left, int right);` 声明快速排序函数。
- `int partition(vector<int>& nums, int left, int right);` 声明划分函数。
- `int main() { ... }` 主函数。
- `vector<int> nums = {5, 1, 3, 8, 4, 2, 9, 6, 7};` 定义一个名为nums的vector容器,并初始化为{5, 1, 3, 8, 4, 2, 9, 6, 7}。
- `quick_sort(nums, 0, nums.size() - 1);` 调用快速排序函数,对nums进行排序。
- `for (int num : nums) { ... }` 遍历nums中的元素,并输出。
- `void quick_sort(vector<int>& nums, int left, int right) { ... }` 快速排序函数的定义。
- `if (left < right) { ... }` 判断左右边界,若左边界小于右边界,则继续划分。
- `int pivot = partition(nums, left, right);` 调用划分函数,返回中间元素下标。
- `quick_sort(nums, left, pivot - 1);` 递归排序左边的子序列。
- `quick_sort(nums, pivot + 1, right);` 递归排序右边的子序列。
- `int partition(vector<int>& nums, int left, int right) { ... }` 划分函数的定义。
- `int pivot = nums[right];` 取最右边的元素作为中间元素。
- `int i = left;` 初始化i为左边界。
- `for (int j = left; j < right; ++j) { ... }` 遍历左右边界之间的元素。
- `if (nums[j] < pivot) { ... }` 如果当前元素小于中间元素,则交换当前元素和i所在位置的元素,并且i自增。
- `swap(nums[i], nums[right]);` 将中间元素放到正确位置。
- `return i;` 返回中间元素的下标。
以上就是用C++编程,用STL的容器vector和partition实现快速排序功能的代码,并逐句解释。