【程序】
#include <stdio.h>
#define N 100
void swap(int *p,int *q) //交换
{
int t;
t=*p;
*p=*q;
*q=t;
}
int Partition(int a[],int l,int r)
{
int i,j,p;
p=a[l]; //把第一个数作为基准
i=l;j=r+1;
while(i<j)
{
do{
i++;
} while(p>a[i]);
do{
j--;
}while(p<a[j]);
swap(&a[i],&a[j]);
}
swap(&a[i],&a[j]);
swap(&a[l],&a[j]);
return j;
}
void Quicksort(int a[],int l,int r)
{
int s;
if(l<r)
{
s=Partition(a,l,r); //取出基准
Quicksort(a,l,s-1); //基准左边排序
Quicksort(a,s+1,r); //基准右边排序
}
}
int main()
{
int a[N],i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
Quicksort(a,0,n-1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
}