帮我写一个C语言分治排序算法代码
时间: 2024-05-09 18:19:14 浏览: 96
以下是一个经典的快速排序算法的C语言实现:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
if (left < right) {
int i = left, j = right, pivot = arr[left];
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, left, i - 1);
quick_sort(arr, i + 1, right);
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2, 7, 1, 10, 6, 9};
int len = sizeof(arr) / sizeof(int);
quick_sort(arr, 0, len - 1);
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
快速排序是一种分治算法,它的基本思想是选择一个元素作为基准(pivot),将序列中小于等于基准的元素放在左侧,大于基准的元素放在右侧,然后递归地对左侧和右侧进行排序。这种算法的时间复杂度为O(nlogn),空间复杂度为O(logn)。
阅读全文