定义 : 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
    4快速排序-2.gif
    代码如下 :

    1. <?php
    2. function quick_sort($arr){
    3. $len=count($arr);
    4. if($len<=1){
    5. return $arr;
    6. }
    7. $mid=$arr[0]; // 基准值
    8. $left=[]; // 比基准值小的
    9. $right=[]; // 比基准值大的
    10. // 循环比较
    11. for($i=1;$i<$len;$i++){
    12. if($arr[$i]<$mid){ // 元素小于基准值,放左边
    13. $left[]=$arr[$i];
    14. }else{ // 大于基准值
    15. $right[]=$arr[$i];
    16. }
    17. }
    18. // 递归拆分left+right
    19. $left=quick_sort($left);
    20. $right=quick_sort($right);
    21. // 将小值,基准值,中间值合并到一个数组
    22. return array_merge($left,[$mid],$right);
    23. }
    24. $arr=[4,1,6,5,7,9,3,2];
    25. echo "<pre>";
    26. print_r(quick_sort($arr));
    27. echo "</pre>";