http://baike.baidu.com/view/115472.htm
示例
A[0]
|
A[1]
|
A[2]
|
A[3]
|
A[4]
|
A[5]
|
A[6]
|
49
|
38
|
65
|
97
|
76
|
13
|
27
|
编辑本段
staticint partitions(int a[],int low,int high)
{
int pivotkey=a[low];
//a[0]=a[low];
while(low<high)
{
while(low<high && a[high]>=pivotkey)
--high;
a[low]=a[high];
while(low<high && a[low]<=pivotkey)
++low;
a[high]=a[low];
}
//a[low]=a[0];
a[low]=pivotkey;
return low;
}
staticvoid qsortWeichao(int a[],int low,int high)
{
int pivottag;
if(low<high)
{ //递归调用
pivottag=partitions(a,low,high);
qsortWeichao(a,low,pivottag-1);
qsortWeichao(a,pivottag+1,high);
}
}
static void quicksort(int a[],int n)
{
qsortWeichao(a,0,n);
}
int i,a[11]={0,11,12,5,6,13,8,9,14,7,10};
for(i=0;i<11;printf("%3d",a[i]),++i);
printf("\n");
quicksort(a,10);
for(i=0;i<11;printf("%3d",a[i]),++i);
printf("\n");