洛谷C++p1957
时间: 2024-01-11 20:21:33 浏览: 128
根据引用[1]和引用的内容,洛谷C++p1957是一个关于快速排序算法的问题。快速排序是一种常用的排序算法,其基本思想是通过选择一个基准元素,将数组分为两部分,一部分小于基准元素,一部分大于基准元素,然后对这两部分分别进行递归排序,最终得到有序数组。
以下是一个使用快速排序算法的C++代码示例:
```cpp
#include <iostream>
using namespace std;
// 交换两个元素的值
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// 快速排序函数
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivot = arr[low]; // 选择第一个元素作为基准元素
int i = low, j = high;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
swap(arr[i], arr[j]);
}
while (i < j && arr[i] <= pivot) {
i++;
}
if (i < j) {
swap(arr[i], arr[j]);
}
}
arr[i] = pivot;
quickSort(arr, low, i - 1); // 对基准元素左边的子数组进行排序
quickSort(arr, i + 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;
}
```
这段代码实现了快速排序算法,首先输入一个整数n表示数组的长度,然后输入n个整数作为待排序的数组元素,最后输出排序后的数组。
阅读全文