C语言实现快速排序

快速排序是一种不稳定的排序方法,此外 堆排序、希尔排序也是不稳定的排序方法

 

代码如下:


#include <stdio.h>

// 分区函数,将数组分为两部分,左边小于基准值,右边大于基准值
int partition(int* parr, int low, int high) {
// 选择第一个元素作为基准值
int pivot = parr[low];
// 设置排序结束条件
while (low < high) {
// 从右向左找到比pivot小的值
while (low < high && pivot <= parr[high])
high--;
// 把找到的值赋给low作为下标的元素
parr[low] = parr[high];
// 从左向右找到比pivot大的值
while (low < high && pivot >= parr[low])
low++;
// 把找到的值赋值给high作为下标的元素
parr[high] = parr[low];
}
// 最后把pivot赋值给high所在下标的元素
parr[high] = pivot;
return high;
}

// 使用递归实现多次排序
void quickSort(int* parr, int low, int high) {
// 设置递归出口,也就是递归结束条件
if (low < high) {
// 获取排序后high所在的位置(即high所在的下标)
int pi = partition(parr, low, high);
// 对pi左边的元素进行排序
quickSort(parr, low, pi - 1);
// 对pi右边的元素进行排序
quickSort(parr, pi + 1, high);
}
}

// 输出排序完成后的数组arr
void print(int arr[], int n) {
int i = 0;
for (i = 0; i < n; i++)
printf("%d\t", arr[i]);
}

int main() {
int arr[] = { 4, 3, 6, 1, 7, 2, 8, 5 };
quickSort(arr, 0, sizeof(arr) / sizeof(arr[0]) - 1);
print(arr, sizeof(arr) / sizeof(arr[0]));
return 0;
}

输出结果如图:

使用软件:DEV-C++


日期:2025-02-05

posted @ 2025-02-05 19:54  freeyang8  阅读(13)  评论(0编辑  收藏  举报