找到一个 “基准”(pivot),所有元素比基准值小的摆放在基准左边,大的放在右边,然后递归排序
c语言版本
#include
void QuickSort(int *s,int l,int r);
int main(void)
{
int i;
int k[]={8,65,4,2,0,1,3,5,7,9,25};
QuickSort(k,0,10);
for(i=0;i<11;i++)
printf("%dn",k[i]);
return 0;
}
void QuickSort(int *s,int l,int r)
{
int i,j,pivot;
if(l
i=l;
j=r;
pivot=s[i];
while(i
while(i
if(i
s[i]=s[j];
i++;
}
while(i
s[j]=s[i];
j--;
}
}
s[i]=pivot;
QuickSort(s,l,i-1);
QuickSort(s,i+1,r);
}
}