#include <stdio.h>
#include <stdlib.h>
/* 功能:快速排序
描述:1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。*/
int quicksort(int a[],int left,int right);
int main(int argc, char *argv[]) {
int a[100];
int i,j,n;
//读入数据
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
quicksort(a,1,n);//快速排序调用
//输出排序后的结果
for(i=1;i<=n;i++)
printf("%d",a[i]);
return 0;
}
int quicksort(int a[],int left,int right){
//Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
if(a=NULL||left>right)
return -1;
int i = left;
int j = right;
int x = a[i];
while(i < j){
while(i<j&&a[j]>x)
j--;
if(i<j)
a[i] = a[j++];
while(i < j&&a[i] < x)
i++;
if(i<j)
a[j--] = a[i];
}
a[i] = x;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
注1:取中间数为参考
注2:该函数有些问题,需调整