快速排序法

快速排序不會直接獲得最終結果,只會把比k大和比k小的數分到k的兩邊。(你能夠想象一下i和j是兩個機器人,數據就是大小不一的石頭,先取走i前面的石頭留出迴旋的空間,而後他們輪流分別挑選比k大和比k小的石頭扔給對面,最後在他們中間把取走的那塊石頭放回去,因而比這塊石頭大的全扔給了j那一邊,小的全扔給了i那一邊。只是此次運氣好,扔完一次恰好排整齊。)爲了獲得最後結果,須要再次對下標2兩邊的數組分別執行此步驟,而後再分解數組,直到數組不能再分解爲止(只有一個數據),才能獲得正確結果。php

 

 

參考了百度百科web

 

php代碼以下:數組

 function quickSort ($arr)
{
    if (count($arr) > 1) {
        $k = $arr[0];
        $x = array();
        $y = array();
        $_size = count($arr);
        for ($i = 1; $i < $_size; $i ++) {
            if ($arr[$i] <= $k) {
                $x[] = $arr[$i];
            } else {
                $y[] = $arr[$i];
            }
        }
        $x = quickSort($x);
        $y = quickSort($y);
        return array_merge($x, array($k), $y);
    } else {
        return $arr;
    }
}