快速排序是Hoare (霍尔)提出的,我好纳闷,怎么每一个中国人提出的排序算法。嘿嘿这只是题外话了 。(努力^_^)
{以升序为例}
思路的描述,现在描述不来,就用自己的话闲扯点吧。数列是无序的。假使第一个元素 作为比较的对象,就叫做key 吧。
设两个指针分别指向首和尾。描述了一大堆然后又删除了,好似说不清楚。实在抱歉,先码上代码。
int hoare(int a[] ,int low ,int high)
{
int l = low ;
int h = high ;
int key ;
do
{
while(a[h]>=key && h>l) h--;
if(h>l){ a[l]=a[h];l++;}
while(a[l]<=key && h>l) l++;
if(h>l) {a[h]=a[l];h--}
}while(h>l);
a[l] = key ;
return l;
}
void quicksort(int a[],int low ,int high)
{
int key_index ;
if(low<high)
{
key_index = hoare(a,low,high);
quicksort(a,low,key_index-1);//递归左边部分
quicksort(a,key_index+1,high);//递归右边部分
}
}