运用C++写一个代码:运用快速排序讲一个打乱的数组按照从小到大的顺序排列
时间: 2024-10-08 10:18:35 浏览: 28
关于C++信息学竞赛一维数组及其应用52个源文件及试题
好的,下面是一个简单的C++代码示例,它使用了快速排序算法来将一个打乱的整数数组按升序排列:
```cpp
#include <iostream>
using namespace std;
// 交换两个元素
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
// 快速排序函数
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 partition(int arr[], int low, int high) {
int pivot = arr[high]; // 选择最后一个元素作为基准
int i = (low - 1);
// 从左到右遍历数组,找到第一个大于等于基准的元素
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++; // 将小于基准的元素移到左边
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]); // 将基准放到正确位置
return (i + 1);
}
int main() {
int n;
cout << "Enter the number of elements: ";
cin >> n;
int arr[n];
cout << "Enter the array elements in random order: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// 使用快速排序对数组进行排序
quickSort(arr, 0, n - 1);
cout << "Sorted array in ascending order: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
运行这个程序,用户可以输入一个打乱顺序的整数数组,然后程序会输出排序后的数组。
阅读全文