// 快速排序
#include <stdio.h>
int a[101], n;
void quick_sort(int left, int right)
{
int i, j, t, temp;
// 递归终止条件
if(left >= right)
return;
// 存储基准值
temp = a[left];
i = left;
j = right;
while(i != j)
{
// 顺序必须是从右往左找 这样可以把小的置换到左边
while(a[j] >= temp && i < j)
{
j--;
}
while(a[i] <= temp && i < j)
{
i++;
}
// 交换两个数在数组中的位置
// 当哨兵i和哨兵j没有相遇时
if(i < j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
// 将基准值归位
a[left] = a[i];
a[i] = temp;
// 继续处理左边和右边的,一个递归过程
quick_sort(left, i-1);
quick_sort(i+1, right);
return;
}
int main()
{
int i, j;
// 读入数据
scanf("%d", &n);
for(i = 1; i < n; i++)
{
scanf("%d", &a[i]);
}
// 调用快速排序
quick_sort(1, n);
for(i = 1; i <= n; i++)
{
printf("%d ", a[i]);
}
getchar();
return 0;
}
快速排序-C语言
最新推荐文章于 2025-12-21 18:06:03 发布

1540

被折叠的 条评论
为什么被折叠?



