Hoare 版 (最初版)
[code lang="c"]void qsort_hoare(int *ary,int start,int end)
if(start>=end)
return;
int left=start+1;
int right=end;
while(left<right)
while(ary[left]<ary[start] && left<=end)
left++;
while(ary[right]>=ary[start] && right>start)
right--;
if(left<right)
swap(&ary[left],&ary[right]);
/* Insert the pivot into right place; */
swap(&ary[right],&ary[start]);
qsort_hoare(ary,start,right-1);
qsort_hoare(ary,right+1,end);
[/code]
[code]Lomuto 版 (算法导论)[/code]
[code lang="c"]void qsort(int *ary,int start,int end)
if(start>=end)
return;
int b=start+1;
int i=start+1;
for(i=start+1; i<=end; i++)
if(ary[i]<ary[start])
swap(&ary[b],&ary[i]);
b++;
swap(&ary[b-1],&ary[start]);
qsort(ary,start,b-2);
qsort(ary,b,end);
[/code]
没有评论:
发表评论