快速排序Acwing
时间: 2023-10-12 20:01:28 浏览: 40
以下是一个在 Acwing 平台上使用 C++ 实现的快速排序算法示例:
```cpp
#include <iostream>
using namespace std;
// 交换两个元素
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// 将数组划分为两个子数组,并返回划分点的索引
int partition(int arr[], int low, int high) {
int pivot = arr[low]; // 选择第一个元素作为基准值
int i = low, j = high;
while (i < j) {
while (i < j && arr[j] >= pivot) j--; // 从右向左找第一个小于基准值的元素
while (i < j && arr[i] <= pivot) i++; // 从左向右找第一个大于基准值的元素
if (i < j) swap(arr[i], arr[j]); // 交换找到的两个元素
}
swap(arr[low], arr[i]); // 将基准值放到正确的位置上
return i;
}
// 快速排序递归函数
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high); // 划分点的索引
quickSort(arr, low, pi - 1); // 对划分点的左侧子数组进行排序
quickSort(arr, pi + 1, high); // 对划分点的右侧子数组进行排序
}
}
int main() {
int n;
cin >> n; // 输入数组长度
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i]; // 输入数组元素
}
quickSort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
cout << arr[i] << " "; // 输出排序后的数组
}
cout << endl;
return 0;
}
```
这段代码实现了在 Acwing 平台上进行快速排序。输入首先会读取一个整数 n,表示数组的长度。然后输入 n 个整数作为数组的元素。接下来,使用快速排序算法对这个数组进行排序,并输出排序后的结果。请注意,在 Acwing 平台上提交代码时,需要将代码放入 `int main()` 函数中,且不需要包含额外的输入输出操作。