C语言我编译的quick sort review因为超时没有通过。高手帮我优化了一下,谢谢。最好能说明原因!
intpartition(intl[],intlow,inthigh)l[0]=l[low];//数组l中,l[0]原本不包含数据,数据从l[1]开始。你在这里缺少超快排怎么设置
intpivotkey=l[low];//Sentinel
while(low
while(low
l [low]=l[high];
while(low
l[high]=l[low];l[low]=l[0] ;
returnlow;intqsort(intl[],intlow,inthigh)if(low
intpivotloc=partition(l,low,high);
qsort(l,low,pivotloc- 1) ;
qsort(l,pivotloc+1,high);你确实有问题。我稍微修改了一下。注意使用英制数据时下标从1开始,0应该省略。调用的时候是qsort(l,1,high);
递归调用比较耗时,建议使用Change recursion 其他迭代方法。
C语言我编译的quick sort review因为超时没有通过。高手帮我优化了一下,谢谢。最好能说明原因!