C++ 快排
时间: 2023-07-03 13:11:43 浏览: 97
C++中快速排序(Quick Sort)的实现如下:
```c++
#include<iostream>
using namespace std;
// 交换函数
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
// 分区函数
int partition(int arr[], int left, int right) {
int pivot = arr[right]; // 以最右边的数为基准
int i = left - 1; // i表示小于等于pivot的区域的边界
for (int j = left; j < right; j++) {
if (arr[j] <= pivot) {
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i+1], arr[right]);
return i+1;
}
// 快速排序函数
void quickSort(int arr[], int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right); // 分区并获取基准的位置
quickSort(arr, left, pivotIndex-1); // 对左边的子数组进行排序
quickSort(arr, pivotIndex+1, right); // 对右边的子数组进行排序
}
}
int main() {
int arr[] = {5, 2, 1, 3, 6, 4};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n-1);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
快速排序的基本思想是通过一趟排序将待排序列分成两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再对这两部分分别进行排序,重复上述步骤,直至整个序列有序。
阅读全文