1. function quick_sort($a)
    2. {
    3. // 判断是否需要运行,因下面已拿出一个中间值,这里<=1
    4. if (count($a) <= 1) {
    5. return $a;
    6. }
    7. $middle = $a[0]; // 中间值
    8. $left = array(); // 接收小于中间值
    9. $right = array();// 接收大于中间值
    10. // 循环比较
    11. for ($i=1; $i < count($a); $i++) {
    12. if ($middle < $a[$i]) {
    13. // 大于中间值
    14. $right[] = $a[$i];
    15. } else {
    16. // 小于中间值
    17. $left[] = $a[$i];
    18. }
    19. }
    20. // 递归排序划分好的2边
    21. $left = quick_sort($left);
    22. $right = quick_sort($right);
    23. // 合并排序后的数据,别忘了合并中间值
    24. return array_merge($left, array($middle), $right);
    25. }
    func quickSort(arr []int,start,end int)  {
        if start < end {
            i,j := start,end
            key := arr[(start + end) /2 ]
            for i <= j{
                for arr[i] < key {
                    i ++
                }
                for arr[j] > key {
                    j--
                }
                if i <= j {
                    arr[i],arr[j] = arr[j],arr[i]
                    i++
                    j--
                }
            }
            if start < j {
                quickSort(arr,start,j)
            }
            if end > i {
                quickSort(arr,i,end)
            }
        }
    }