详细的实现和原理放在了代码中,欢迎大家评论区指正!
/*
* 选择排序
* 1. 选择,可以说是筛选,也就是每一次遍历都要找到最小的一个数
* 2. 首先,选择排序算法的思想是将这个数组看成两个数组,一个是有序的,另一个是无序的
* 举例说明:有一个数组$arr = array(4,1,3,2);
* 起始,我们可以看成{null}{4,1,3,2} 这样两个数组,前一个是有序的,后一个是无序的
* 进入第一次循环,我们筛选出了最小数1,所以我们将1放到有序数组中,结果是{1}{4,3,2}
* 。。。。。。
* 由此循环下去,整体循环几次呢?数组长度length-1次。因为无序数组循环到剩下一个元素时,这个元素就是最大元素,也就无需进行下一步筛选
* **/
function selectSort($arr){
$len = count($arr);
for($i = 0;$i < $len-1;$i++){
$min = $arr[$i];
for($j = $i+1;$j < $len;$j++){
if($arr[$j] < $min){
$swap = $min;
$min = $arr[$j];
$arr[$j] = $swap;
}
}
$arr[$i] = $min;
}
return $arr;
}
$arr = array(6,2,4,3,5,7,9,1,10);
print_r(selectSort($arr));