快速排序

function quick_sort($arr) {
    //先判斷是否須要繼續進行
    $length = count($arr);
    if($length <= 1) {
        return $arr;
    }
    //若是沒有返回,說明數組內的元素個數 多餘1個,須要排序
    //選擇一個標尺
    //選擇第一個元素
    $base_num = $arr[0];
    //遍歷 除了標尺外的全部元素,按照大小關係放入兩個數組內
    //初始化兩個數組
    $left_array = array();//小於標尺的
    $right_array = array();//大於標尺的
    for($i=1; $i<$length; $i++) {
        if($base_num > $arr[$i]) {
            //放入左邊數組
            $left_array[] = $arr[$i];
        } else {
            //放入右邊
            $right_array[] = $arr[$i];
        }
    }
    //再分別對 左邊 和 右邊的數組進行相同的排序處理方式
    //遞歸調用這個函數,並記錄結果
    $left_array = quick_sort($left_array);
    $right_array = quick_sort($right_array);
    //合併左邊 標尺 右邊
    return array_merge($left_array, array($base_num), $right_array);
}數組

相關文章
相關標籤/搜索