這也是在實際中最常用的一種排序演算法,速度快,效率高。就像名字一樣,快速排序是最優秀的一種排序演算法。
時間複雜度 o(nlogn) 最壞時間複雜度o(n^2)
快速排序採用的思想是分治思想。
找出乙個元素(理論上可以隨便找乙個)作為基準(pivot),然後對陣列進行分割槽操作,使基準左邊元素的值都不大於基準值,基準右邊的元素值 都不小於基準值,如此作為基準的元素調整到排序後的正確位置。
遞迴快速排序,將其他n-1個元素也調整到排序後的正確位置。
直到所有的左右區間只有乙個數。此時每個元素都是在排序後的正 確位置,排序完成。
所以快速排序演算法的核心演算法是分割槽操作,即如何調整基準的位置以及調整返回基準的最終位置以便分治遞迴。
function
quicksort
($arr
)$tmp
=$arr[0
];unset
($arr[0
]);//取出基數
$left
=array()
;//左區間
$right
=array()
;//右區間
foreach
($arr
as$value
)else}if
(count
($left))
$left
=quicksort
($left);
//遞迴排序左區間內的數if(
count
($right))
$right
=quicksort
($right);
//遞迴排序右區間內的數
return
array_merge
($left,[
$tmp],
$right);
//遞迴合併
}
php 快速排序演算法,PHP 快速排序演算法
概念 快速排序演算法是對冒泡演算法的乙個優化。他的思想是先對陣列進行分割,把大的元素數值放到乙個臨時陣列裡,把小的元素數值放到另乙個臨時陣列裡 這個分割的點可以是陣列中的任意乙個元素值,一般用第乙個元素,即 array 0 然後繼續把這兩個臨時陣列重複上面拆分,最後把小的陣列元素和大的陣列元素合併起...
php 快速排序演算法,php 快速排序函式
在php程式設計中會用到一些常用的演算法,把這些演算法 寫成函式方便以後呼叫 php快速排序函式就這樣誕生了,兩個版本,遞迴和無遞迴。可以根據實際需要選用。qsort 資料快速排序遞迴版 array to sort 需要排序的陣列 排序過程中,陣列的鍵會被替換為數字索引的鍵 如果 array to ...
php實現排序演算法(一) 氣泡排序 快速排序
好久沒有來練習的自己的演算法技能了以至於很多基本的演算法都快忘記了。以前用c寫的演算法也不多。那麼今天開始吧!以後堅持每天晚上編寫一些簡單的演算法,堅持練習!氣泡排序是最簡單基礎的排序,但是由於好久沒寫 了,一開始寫下去還是不流暢。罪過罪過 氣泡排序原理,每次從待排序的序列裡面選出乙個最大或者最小的...