按升序来说
右边找小,填到左边的坑,这个位置成为新的坑,然后左边找大,填到这个坑当中
int PartSort(int *a,int begin,int end)
{
int key=a[begin];
int piti=begin;
while(begin<end)
{
while(begin<end&&a[end]>=key)
--end;
a[piti]=a[end];
piti=end;
while(begin<end&&a[begin<=key])
++begin;
a[piti]=a[begin];
piti=begin;
}
a[piti]=key;
return piti;
}
void QuickSort(int *a,int begin,int end)
{
if(begin>=end)
return ;
int keyi=PartSort(a,begin,end);
QuickSort(a,begin,keyi-1);
QuickSort(a,keyi+1,end);
}