快速排序不會直接獲得最終結果,只會把比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; } }