void quicksort(int num[],int start,int end)
{
int key=num[start];
int prev = start;
int last = end;
//结束条件必不可少,否则将会进入死循环。
if(prev >= last)
{
return;
}
while(prev < last)
{
while(prev < last)
{
if(num[last] < key)
{
num[prev]=num[last];
++prev;
//当最后一个元素被写入到pre位置,循环应结束,pre后面的元素还没准备好
break;
//last此时还不能--,因为还没有将其覆盖。
}
--last;
}
while(prev < last)
{
if(num[prev] > key)
{
num[last]=num[prev];
--last;
break;
}
++prev;
}
}
num[last] = key;
quicksort(num,start,last-1);
quicksort(num,last+1,end);
}
快排
最新推荐文章于 2022-12-25 21:29:08 发布