输入格式:
输入共2行,第一行是关键字的个数,第二行给出所有的关键字。
输出格式:
输出共2行,分别输出排序过程中用到的枢轴记录和排序后的结果,每个关键字用%4d输出。
输入样例:
10
6 8 7 9 0 1 3 2 4 5
输出样例:
6 5 1 2 3 9 8
0 1 2 3 4 5 6 7 8 9
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
int Partition(int a[1000],int left,int right)
{
int pivotkey=a[left];
printf("%4d",pivotkey);
while(left<right)
{
while(left<right&&a[right]>=pivotkey)
--right;
int t;
t=a[left];
a[left]=a[right];
a[right]=t;
while(left<right&&a[left]<=pivotkey)
++left;
int k;
k=a[left];
a[left]=a[right];
a[right]=k;
}
return left;
}
void Qsort(int a[1000],int left,int right)
{
if(left<right)
{
int index=Partition(a,left,right);
Qsort(a,left,index-1);
Qsort(a,index+1,right);
}
}
int main()
{
int n;
scanf("%d",&n);
int a[1000];
int i;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
//Partition(a,0,n-1);
Qsort(a,0,n-1);
printf("\n");
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
return 0;
}