用c语言实现快速排序算法
时间: 2023-07-12 12:35:34 浏览: 121
快速排序是一种常用的排序算法,其基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到整个数据变成有序序列的目的。
下面是用C语言实现快速排序的代码:
```c
#include <stdio.h>
// 交换两个数的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 快速排序函数
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) // 从右往左找第一个小于pivot的数
j--;
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < pivot) // 从左往右找第一个大于等于pivot的数
i++;
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quick_sort(arr, left, i-1); // 递归左半部分
quick_sort(arr, i+1, right); // 递归右半部分
}
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n-1);
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
其中,`swap`函数用于交换两个数的值,`quick_sort`函数是快速排序的核心代码,使用左右指针的方式来进行排序。
在主函数中,我们初始化一个待排序的数组`arr`,然后调用`quick_sort`函数进行排序,最后输出排序后的结果。
阅读全文