如何快速排序(Quick Sort):
时间: 2024-03-21 11:35:12 浏览: 47
快速排序(Quick Sort)是一种常用的排序算法,它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到整个数据变成有序序列。
下面是快速排序的实现代码:
```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--;
}
if (i < j) {
swap(arr[i], arr[j]);
}
// 从左向右找到第一个大于基准值的元素
while (i < j && arr[i] <= pivot) {
i++;
}
if (i < j) {
swap(arr[i], arr[j]);
}
}
return i; // 返回分割点的下标
}
// 快速排序函数
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivotPos = partition(arr, low, high); // 获取分割点的下标
quickSort(arr, low, pivotPos - 1); // 对分割点左边的子数组进行快速排序
quickSort(arr, pivotPos + 1, high); // 对分割点右边的子数组进行快速排序
}
}
int main() {
int arr[] = {5, 2, 9, 1, 7, 6, 3, 8, 4};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
以上代码实现了快速排序算法。首先定义了一个`swap`函数用于交换两个元素的值,然后定义了一个`partition`函数用于将数组分割为两部分,并返回分割点的下标。最后定义了`quickSort`函数用于递归地对子数组进行快速排序。
在`main`函数中,我们定义了一个待排序的数组`arr`,然后调用`quickSort`函数对其进行排序,并输出排序后的结果。
快速排序的时间复杂度为O(nlogn),是一种高效的排序算法。
阅读全文