快速排序c语言
时间: 2023-06-22 15:22:11 浏览: 51
以下是快速排序的C语言实现:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left + 1;
int j = right;
while (i <= j) {
while (i <= right && arr[i] < pivot) {
i++;
}
while (j >= left + 1 && arr[j] >= pivot) {
j--;
}
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
arr[left] = arr[j];
arr[j] = pivot;
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
int main() {
int arr[] = {3, 5, 1, 7, 9, 2, 8, 4, 6};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
快速排序的基本思想是:选择一个基准元素,将序列分成两个子序列,左边的子序列都小于等于基准元素,右边的子序列都大于基准元素,然后递归对左右子序列进行排序。在实现过程中,我们用两个指针i和j分别从左右两端开始扫描,当i找到一个大于等于基准元素的数,j找到一个小于基准元素的数时,交换i和j的元素,最终将基准元素放到正确位置上。
阅读全文