『PHP學習筆記』系列五:選擇排序
阿新 • • 發佈:2018-11-17
演算法原理:
- 選擇排序(Selection sort)是一種簡單直觀的排序演算法。
- 它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。
- 求得一個數組的最大值的下標,並將這個最大值下標的單元跟最後一個單元進行交換;
- 然後,繼續從剩餘資料中取得最大值的下標,並將這個最大值下標的單元跟剩餘的最後一個單元交換。
- 以此類推,直到只剩下一個數據,就不用找了。
程式碼實現:
<?php //選擇排序演算法 //最大值與第一個元素交換的方式 function order1($numbers1) { $len1 = count($numbers1); //取得陣列長度 for ($i = 0; $i < $len1 - 1; $i++) { //外迴圈 $max = $numbers1[$i]; //假設當前陣列元素既是最大值,當前下標即為最大值下標 $max_index = $i; for ($j = $i + 1; $j < $len1; $j++) { //內迴圈 if ($max > $numbers1[$j]) { //將假定的最大值與內迴圈陣列元素進行比較,取出最大值賦值給$max,最大值下標賦值給$max_index $max = $numbers1[$j]; $max_index = $j; } } //將最大值下標的陣列元素與假定的最大值元素進行交換,完成最大值與第一個單元的交換過程 $numbers1[$max_index] = $numbers1[$i]; $numbers1[$i] = $max; } return $numbers1; //注意:return放在迴圈內會終止函式 } $arr = array(9, 8, 7, 5, 6, 4, 3, 2, 1); echo "<h2>選擇排序</h2>"; echo "<pre>"; print_r(order1($arr)); echo "</pre><hr />"; ?>