帮我用C语言生成快速排序算法
时间: 2024-05-16 11:13:33 浏览: 17
当然可以,以下是使用C语言实现快速排序算法的代码:
```c
#include<stdio.h>
void quicksort(int a[], int left, int right) {
if(left >= right) return; // 如果左边的索引大于等于右边的索引就代表已经整理完成一个组了
int i = left;
int j = right;
int pivot = a[left]; // 以最左边的数为基准数
while(i < j) {
while(i < j && a[j] >= pivot) // 从右向左找第一个小于基准数的数
j--;
if(i < j)
a[i++] = a[j];
while(i < j && a[i] < pivot) // 从左向右找第一个大于等于基准数的数
i++;
if(i < j)
a[j--] = a[i];
}
a[i] = pivot; // 最后将基准数归位
quicksort(a, left, i - 1); // 继续处理左边的,这里是一个递归的过程
quicksort(a, i + 1, right); // 继续处理右边的 ,这里是一个递归的过程
}
int main() {
int a[] = {50, 10, 90, 30, 70, 40, 80, 60, 20};
quicksort(a, 0, 8);
for(int i = 0; i < 9; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
以上代码使用了递归实现快速排序,其中 `left` 和 `right` 分别代表待排序数组的左右索引。在代码中,我们将最左边的数作为基准数,然后从右向左找到第一个小于基准数的数,从左向右找到第一个大于等于基准数的数,然后交换这两个数的位置。当左右索引相遇时,将基准数归位,然后继续递归处理左右两边的数组。最终得到的就是一个有序数组。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)