代码:
/*===============================================
* 文件名称:QuickSort.c
* 创建日期:2023年04月03日
* 描 述:快速排序;先从一组数据中选择一个
* pivot基准(通常选择第一个数据或者最后一个数据;
* 本程序以左边第一个数据为基准,进行程序编写),
* 再取一个左边界下标“l”和右边界下标“r”进行数据偏移。
================================================*/
#include <stdio.h>
int a[32];
int n = 0;
int partition(int a[], int l, int r)
{
int tmp = 0;
int pivot = a[l];
while (l < r)
{
while (l < r && a[r] >= pivot)
{
r--;
}
tmp = a[l];
a[l] = a[r];
a[r] = tmp;
while (l < r && a[l] <= pivot)
{
l++;
}
tmp = a[l];
a[l] = a[r];
a[r] = tmp;
}
return l;
}
void quick_sort(int a[], int l, int r)
{
if (l < r)
{
int pivot = partition(a,l,r);
quick_sort(a, l, pivot - 1);
quick_sort(a, pivot + 1, r);
}
}
int main(int argc, char *argv[])
{
int i = 0;
printf("请输入数组长度:\n");
scanf("%d",&n);
printf("请输入数组元素:\n");
for (i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
quick_sort(a, 0, n - 1);
printf("快排后的数组元素为:\n");
for (i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}