#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int RandomPartition(int *A,int beg,int end)
{
if(A == NULL || beg>end)
{
exit(0);
}
int i=beg;
int j=end;
int k=beg+rand()%(end-beg+1);
int temp=A[beg];
A[beg]=A[k];
A[k]=temp;
int s=A[beg];
while(i<j)
{
while(i<j && A[j]>s)
{
--j;
}
if(i<j)
{
A[i]=A[j];
++i;//注意
}
while(i<j && A[i]<s)
{
++i;
}
if(i<j)
{
A[j]=A[i];
--j;//注意
}
}
A[i]=s;
return i;
}
void QuickSort(int *A,int beg,int end)
{
if(beg >= end)//注意
{
return;
}
int k=RandomPartition(A,beg,end);
QuickSort(A,beg,k-1);
QuickSort(A,k+1,end);
}
int main()
{
int A[]={14,543,42,665,43,23,65,12,424};
int len = sizeof(A)/sizeof(int);
QuickSort(A,0,len-1);
for(int i=0;i<len;i++)
{
printf("%d ",A[i]);
}
printf("\n");
return 0;
}