从未排序区间中找到最小元素,放入已排序区间末尾
function selectionSort($arr){
$newArr = [];
$len = count($arr);
for($j = 0;$j < $len;$j++){
$smallest_index = findSmallest($arr);
$newArr[] = $arr[$smallest_index];
unset($arr[$smallest_index]);
$arr = array_values($arr);
}
return $newArr;
}
function findSmallest($arr){
$smallest = $arr[0];
$smallest_index = 0;
for($i = 1;$i < count($arr);$i++){
if($arr[$i] < $smallest){
$smallest = $arr[$i];
$smallest_index = $i;
}
}
return $smallest_index;
}
$test = selectionSort([5,3,6,2,10]);
print_r($test);