// 选择排序 第一个元素和剩余的对比,找出最小的,第二个和其他对比,找出第二小的,一直到最后
$arr = array(4,2,5,1,3); function selectSort($arr) { $len = count($arr); for ($i=0; $i<$len; $i++) { // 循环多少次 $p=$i; // 以当前元素为基准 for ($k=$i+1; $k<$len; $k++) { // 循环对比,选出此轮最小值的k if ($arr[$p] > $arr[$k]) { // 若下一个元素小于当前元素,则更新k $p = $k; } } if ($p != $i) { // 若k有变,则更换元素的位置 $tmp = $arr[$p]; $arr[$p] = $arr[$i]; $arr[$i] = $tmp; // 此轮最小值 } } return $arr; }
$res = selectSort($arr);
print_r($res);
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)