1. 程式人生 > >PHP選擇排序

PHP選擇排序

數據 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選擇排序