<?php //选择排序 //原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. $arr = array_rand(range(1, 100), 10); shuffle($arr); $arr = [7,6,5,4,3,2,1]; function select_sort($arr) { $len = count($arr); for ($i = 0; $i < $len - 1; $i++) { //循环len次 $min = $i; print_r($i); for($j = $i+1;$j<$len;$j++){ //每次找到最小的min if($arr[$j] < $arr[$min]){ $min = $j; } } if($min != $i){ $tmp = $arr[$min]; $arr[$min] = $arr[$i]; $arr[$i] = $tmp; } print_r("第".($i+1)."次排序后结果".join(',',$arr).'<br>'); } return $arr; } $res= select_sort($arr); echo join(',',$res);
<?php //选择排序 找到最小的下表,依次放入到最左边 $arr = [7,6,5,4,3,2,1]; function select_sort($arr) { for($i = 0;$i<count($arr)-1; $i++){ //循环次数 $min = $i; //默认最小的为第一个 for($j = $i+1;$j<count($arr);$j++){ //$i已经排序好的下标 从他后面依次开始和min下标的比较,最小的给出来 if($arr[$j] < $arr[$min]){ $min = $j; } } //如果最小的下表不等于开始的第一个 交换 if($min != $i){ $tmp = $arr[$i]; $arr[$i] = $arr[$min]; $arr[$min] = $tmp; } print_r("第".($i+1).'次'.join(',',$arr)."<br>"); } return $arr; } echo join(',',$arr); echo "<br>"; $res = select_sort($arr); echo join(',',$res);