您好,登錄后才能下訂單哦!
這篇文章運用了實例代碼展示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常見的排序方法有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。