用C语言设计快速排序算法
时间: 2024-05-16 13:17:54 浏览: 75
用c语言实现快速排序算法
快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,使得其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分继续进行排序,以达到整个序列有序的目的。
以下是用C语言实现快速排序算法的示例代码:
```c
#include <stdio.h>
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pivot = arr[low];
int i = low, j = high;
while (i < j) {
while (i < j && arr[j] > pivot) {
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < pivot) {
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = pivot;
quick_sort(arr, low, i - 1);
quick_sort(arr, i + 1, high);
}
}
int main() {
int arr[] = { 5, 9, 3, 7, 2, 8, 4, 1, 6 };
int len = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, len - 1);
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上述代码中,`quick_sort()` 函数实现了快速排序算法。它接受三个参数:待排序的数组 `arr`,以及数组的起始位置 `low` 和结束位置 `high`。在函数内部,首先选取数组第一个元素作为枢轴元素 `pivot`,然后使用双指针分别从数组的两端向中间扫描,将大于枢轴元素的元素移到数组的右侧,将小于枢轴元素的元素移到数组的左侧,最终将枢轴元素插入到数组的中间位置,完成一趟排序。然后递归调用 `quick_sort()` 函数对左右两部分分别进行排序,直到整个数组有序为止。
在 `main()` 函数中,我们定义了一个待排序的数组 `arr`,然后调用 `quick_sort()` 函数对其进行排序,最后输出排序后的结果。
阅读全文