思路分析:
在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
//选择排序 function selectSort($arr) { $len = count($arr); for ($i = 0; $i < $len - 1; $i++) { //先假设最小元素的位置 $p = $i; for ($j = $i + 1; $j < $len; $j++) { if ($arr[$p] > $arr[$j]) { //循环过程中发现更小的元素则重新给 $p 赋值 $p = $j; } } //如果最小值与假设的 $i 不同,则交换其位置 if ($p != $i) { $tmp = $arr[$p]; $arr[$p] = $arr[$i]; $arr[$i] = $tmp; } } print_r($arr); }
$arr = [3, 2, 8, 6, 7, 5, 9, 4, 1];
selectSort($arr);