PHP排序算法之快速排序(Quick Sort)及其优化算法详(4)

//规定数组长度阀值 #define MAX_LENGTH_INSERT_SORT 7 function QSort(array &$arr,$low,$high){ //当 $low >= $high 时表示不能再进行分组,已经能够得出正确结果了 if(($high - $low) > MAX_LENGTH_INSERT_SORT){ while($low < $high){ $pivot = Partition($arr,$low,$high); //将$arr[$low...$high]一分为二,算出枢轴值 QSort($arr,$low,$pivot - 1); //对低子表($pivot左边的记录)进行递归排序 $low = $pivot + 1; } }else{ //直接插入排序 InsertSort($arr); } }

在上面,我们使用循环替换递归,减少了之前一般的递归量。结果是一样的,但是采用循环而不是递归的方法可以缩减堆栈的深度,从而提高了整体性能。

好了、终于写完了。这篇博客基本上是 Copy 《大话数据结构》里面的内容,在这里总结出来不仅是一个记录,大家也可以从中获得很大的收获。

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php排序算法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/88d82454282857f73d5647ac07f41abe.html