代码实现:
/**
* 选择排序
* 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
*/
function selectSort($arr){
//定义中间变量
$temp = 0;
$mnt = count($arr);
for ($i=0; $i < $mnt-1; $i++) {
//定义最小位置
$minIndex = $i;
for ($j=$i+1; $j < $mnt; $j++) {
if($arr[$j] < $arr[$minIndex]){
$minIndex = $j;
}
}
if($i!=$minIndex){
$temp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
}
}
return $arr;
}
//测试
$arr = [5,2,1,1,3,1,4];
// $end = numSort($arr);
$end = selectSort($arr);
echo "<pre>";
print_r($end);
结论:
每一轮比较都可以确定一个位置,对于N个数,比较N-1轮可以确定N个位置上的数,因为确定了N-1个位置,最后一个位置也就确定了