快速排序.
想法:良葛格筆記 進去看唄
/***********************************************************/
#include<stdio.h>
#include<stdlib.h>
int partition(int[], int, int);
void quicksort(int[], int, int);
main()
{
int a,n;
int num[100001]={0},top=0;
while(scanf("%d",&n)!=EOF)
{num[top]=n;top++;}
quicksort(num,0,top-1);
for(a=0;a<top;a++)
printf("%d ",num[a]);
printf("\n");
return 0;
}
int partition(int num[],int left,int right)
{
int a=left-1,b,s=num[right];
for(b=left;b<right;b++)
{
if(num[b]>=s)
{
a++;
int temp;
temp=num[a];
num[a]=num[b];
num[b]=temp;
}
}
int temp;
temp=num[a+1];
num[a+1]=num[right];
num[right]=temp;
return a+1;
}
void quicksort(int num[],int left,int right)
{
int q;
if(left<right)
{
q=partition(num,left,right);
quicksort(num,left,q-1);
quicksort(num,q+1,right);
}
}