用C语言编写分治法实现快速排序的代码
时间: 2024-05-10 11:16:21 浏览: 112
c语言分治法快速排序源码.doc
下面是用 C 语言编写分治法实现快速排序的代码:
```c
#include <stdio.h>
void quick_sort(int[], int, int);
int partition(int[], int, int);
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pivot_index = partition(arr, low, high);
quick_sort(arr, low, pivot_index - 1);
quick_sort(arr, pivot_index + 1, high);
}
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
```
这段代码实现了快速排序算法。在 `quick_sort()` 函数中,如果序列的长度大于 1,则选择一个枢轴元素,将序列分成两个部分,并递归地对这两个部分进行排序。在 `partition()` 函数中,使用一个指针 `i` 来指向已处理的小于枢轴元素的最后一个元素,然后将小于枢轴元素的元素交换到指针 `i` 的位置,最后将枢轴元素交换到指针 `i` 的下一个位置。
阅读全文