php中的幾種常見排序方法
PHP有多種排序方法,本篇文章給大家介紹幾種常見的排序方法:氣泡排序、交換法排序、選擇法排序、插入法排序、快速排序。希望對大家有所幫助。
排序方法1:氣泡排序
function BubbleSort($arr) { // 獲得陣列總長度 $num = count($arr); // 正向遍歷陣列 for ($i = 1; $i < $num; $i++) { // 反向遍歷 for ($j = $num - 1; $j >= $i ; $j--) { // 相鄰兩個數比較 if ($arr[$j] < $arr[$j-1]) { // 暫存較小的數 $iTemp = $arr[$j-1]; // 把較大的放前面 $arr[$j-1] = $arr[$j]; // 較小的放後面 $arr[$j] = $iTemp; } } } return $arr; }
排序方法2:交換法排序
function ExchangeSort($arr){ $num = count($arr); // 遍歷陣列 for ($i = 0;$i < $num - 1; $i++) { // 獲得當前索引的下一個索引 for ($j = $i + 1; $j < $num; $j++) { // 比較相鄰兩個的值大小 if ($arr[$j] < $arr[$i]) { // 暫存較小的數 $iTemp = $arr[$i]; // 把較大的放前面 $arr[$i] = $arr[$j]; // 較小的放後面 $arr[$j] = $iTemp; } } } return $arr; }
排序方法3:選擇法排序
function SelectSort($arr) { // 獲得陣列總長度 $num = count($arr); // 遍歷陣列 for ($i = 0;$i < $num-1; $i++) { // 暫存當前值 $iTemp = $arr[$i]; // 暫存當前位置 $iPos = $i; // 遍歷當前位置以後的資料 for ($j = $i + 1;$j < $num; $j++){ // 如果有小於當前值的 if ($arr[$j] < $iTemp) { // 暫存最小值 $iTemp = $arr[$j]; // 暫存位置 $iPos = $j; } } // 把當前值放到算好的位置 $arr[$iPos] = $arr[$i]; // 把當前值換成算好的值 $arr[$i] = $iTemp; } return $arr; }
排序方法4:插入法排序
function InsertSort($arr){ $num = count($arr); // 遍歷陣列 for ($i = 1;$i < $num; $i++) { // 獲得當前值 $iTemp = $arr[$i]; // 獲得當前值的前一個位置 $iPos = $i - 1; // 如果當前值小於前一個值切未到陣列開始位置 while (($iPos >= 0) && ($iTemp < $arr[$iPos])) { // 把前一個的值往後放一位 $arr[$iPos + 1] = $arr[$iPos]; // 位置遞減 $iPos--; } $arr[$iPos+1] = $iTemp; } return $arr; }
排序方法5:快速排序
function QuickSort($arr){ $num = count($arr); $l = $r = 0; $left = $right = array(); // 從索引的第二個開始遍歷陣列 for ($i = 1;$i < $num; $i++) { // 如果值小於索引1 if ($arr[$i] < $arr[0]) { // 裝入左索引陣列(小於索引1的資料) $left[] = $arr[$i]; $l++; } else { // 否則裝入右索引中(大於索引1的資料) $right[] = $arr[$i]; $r++; // } } // 如果左索引有值 則對左索引排序 if($l > 1) { $left = QuickSort($left); } // 排序後的陣列 $new_arr = $left; // 將當前陣列第一個放到最後 $new_arr[] = $arr[0]; // 如果又索引有值 則對右索引排序 if ($r > 1) { $right = QuickSort($right); } // 根據右索引的長度再次增加資料 for($i = 0;$i < $r; $i++) { $new_arr[] = $right[$i]; } return $new_arr; }
推薦教學:《PHP視訊教學》
以上就是詳解php中的幾種常見排序方法(附程式碼)的詳細內容,更多請關注TW511.COM其它相關文章!