使用c语言写一段快速排序的代码
时间: 2023-10-22 19:34:57 浏览: 101
以下是使用C语言实现快速排序的代码:
```c
#include <stdio.h>
/* 快速排序函数 */
void quick_sort(int array[], int left, int right) {
int i = left, 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[] = {5, 2, 8, 4, 9, 3, 7, 6, 1};
int n = sizeof(array) / sizeof(array[0]);
int i;
printf("原始数组:\n");
for (i = 0; i < n; i++) {
printf("%d ", array[i]);
}
quick_sort(array, 0, n - 1);
printf("\n排序后数组:\n");
for (i = 0; i < n; i++) {
printf("%d ", array[i]);
}
return 0;
}
```
在这个实现中,我们使用了递归的方式对左右子序列进行排序。基准元素的选择使用了中间值的方法。在实现中,我们使用了两个指针 `i` 和 `j`,分别从两端向中间扫描,找到需要交换的元素。我们通过交换两个元素的位置来完成排序。
阅读全文