问题描述
采用快速排序算法,排序输入的n个整数,prvotkey(枢轴)每次选取数组第一个数。
输出快速排序第一趟排序的结果。
输入格式
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数,空格隔开。
输出格式
按照要求排序后输出,由空格分隔。
样例输入
9
50 10 90 30 70 40 80 60 20
样例输出
20 10 40 30 50 70 80 60 90
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int a[n] = {0};
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int low=0,high = n-1;
int temp = a[low]; //暂存枢值
while(low != high)
{
while(low < high && a[high] >= temp) high --;// 找小于轴值的记录
if(low < high) {a[low] = a[high],low++;} //该记录移动到小下标端
while (low < high && a[low] <= temp) low++ ; //找大于轴值的记录
if(low < high) { a[high] = a[low]; high--; //该记录移动到大下标端
}
}
a[low] = temp;
for (int i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
运行结果:
9
50 10 90 30 70 40 80 60 20
20 10 40 30 50 70 80 60 90
Process exited after 26.62 seconds with return value 0
请按任意键继续. . .