PHP選擇排序
阿新 • • 發佈:2019-01-22
數據 fin select 最小 php ref 接下來 pri 開始
選擇排序,非常的直觀,也相對簡單。
思路如下:
假設,從小到大排序。
首先,第一輪循環,從所有數組中,找出最小的元素,然後將其下標記錄下來。
然後,確定不是第一個元素,則和第一個元素進行交換。
接下來,從第二個元素開始,再找出最小的一個元素,記錄其下標。再和第二個進行交換。
一直到最後。每一輪循環,都會確定一個最小的元素,放在數組的前邊。
這思路,看到這裏,有沒有想到那個“冒泡排序”的另一個寫法?
下邊是選擇排序的實際代碼
1 function selection_sort($arr) 2 { 3 $len = count($arr); 4 for ($i = 0; $i < $len - 1; $i++) {//總循環的輪數 5 $min = $i;//初始化最小的坐標 6 for ($j = $i + 1; $j < $len; $j++) {//每輪循環對比的次數 7 if ($arr[$min] > $arr[$j]) {//每次當前元素都和最小值數組對比,誰小就記錄誰的下標 8 $min = $j; 9 } 10 } 11 if ($min> $i) {//如果最小值下標不是當前輪的第一個元素,則交換數據 12 $tmp = $arr[$i]; 13 $arr[$i] = $arr[$min]; 14 $arr[$min] = $tmp; 15 } 16 } 17 return $arr; 18 } 19 20 print_r(selection_sort($arr));
PHP選擇排序