c语言分治法实现快速排序
时间: 2023-07-07 11:21:21 浏览: 101
C语言分治法实现归并排序
5星 · 资源好评率100%
快速排序是一种基于分治法的排序算法,其核心思想是选择一个基准元素,将数组分成两部分,其中一部分的元素都小于等于基准元素,另一部分的元素都大于基准元素,然后递归地对两部分进行排序。具体实现步骤如下:
1. 选择一个基准元素。
2. 将数组分成两部分,其中一部分的元素都小于等于基准元素,另一部分的元素都大于基准元素。
3. 递归地对两部分进行排序。
下面是快速排序的 C 语言代码实现:
```c
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);
}
}
```
在该代码中,quick_sort() 函数接收一个待排序的数组、左右边界的索引,首先判断左边界是否小于右边界,如果是,则选择 arr[left] 作为基准元素,定义两个指针 i 和 j 分别指向左右边界,然后交替移动指针,将小于基准元素的元素移到左边,大于基准元素的元素移到右边,最后将基准元素放到中间位置。接着,递归地对基准元素左右两部分进行排序。
总的来说,快速排序的时间复杂度为 O(nlogn),空间复杂度为 O(logn)。
阅读全文