怎么用C语言编写快速排序
时间: 2024-02-08 22:36:35 浏览: 76
快速排序_C语言_快速排序_
快速排序是一种递归的排序算法,它的基本思想是找到一个中间值,将小于中间值的数放到左边,大于中间值的数放到右边,然后对左右两边的数再进行递归排序,直到排序完成。
以下是用C语言编写快速排序的示例代码:
```c
#include <stdio.h>
void quickSort(int arr[], int left, int right) {
int i, j, pivot, temp;
if (left < right) {
pivot = left;
i = left;
j = right;
while (i < j) {
while (arr[i] <= arr[pivot] && i < right)
i++;
while (arr[j] > arr[pivot])
j--;
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[pivot];
arr[pivot] = arr[j];
arr[j] = temp;
quickSort(arr, left, j - 1);
quickSort(arr, j + 1, right);
}
}
int main() {
int arr[] = { 10, 7, 8, 9, 1, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
```
在上述代码中,`quickSort()`函数是快速排序的主要逻辑。它接受一个数组和数组的左右边界作为参数。如果左边界小于右边界,就找到中间值(即`pivot`),然后将小于中间值的数放到左边,大于中间值的数放到右边。然后对左右两边的数分别进行递归排序,直到排序完成。
在`main()`函数中,我们定义了一个整数数组,并计算出数组的大小。然后调用`quickSort()`函数进行排序,并输出排序后的结果。
注意,在实际的应用中,我们可能需要在`quickSort()`函数中添加一些边界条件的判断,以避免出现数组越界的情况。
阅读全文