写一个C++ 快速排序
时间: 2023-10-24 09:11:41 浏览: 66
这是一个快速排序的 C 语言实现:
```
#include <stdio.h>
#include <stdlib.h>
void quick_sort(int *array, int left, int right) {
int i = left;
int j = right;
int pivot = array[(left + right) / 2];
while (i <= j) {
while (array[i] < pivot) {
i++;
}
while (array[j] > pivot) {
j--;
}
if (i <= j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if (left < j) {
quick_sort(array, left, j);
}
if (i < right) {
quick_sort(array, i, right);
}
}
int main() {
int array[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
quick_sort(array, 0, 9);
for (int i = 0; i < 10; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
```
快速排序是一种分治算法,它将一个序列分成两个子序列,将两个子序列分别排序,最后合并为一个有序序列。
算法流程:
1. 选取序列的第一个数作为基准值 pivot。
2. 定义两个指针 i 和 j,分别指向序列的左端和右端。
3. 从序列的右端开始,找到第一个小于基准值的数,用 j 标记位置。
4. 从序列的左端开始,找到第一个大于基准值的数,用 i 标记位置。
5. 将 i 和 j 标记的数交换位置。
6. 重复步骤 3-5,直到 i 和 j 重合。
7. 将基准值插入 i 和 j 重
阅读全文