选择排序算法的原理如下:
1、从左到右检查数组的每个元素,找出值最小的那个值索引并记录下来。
2、将步骤1记录下的最小值索引与本次检查的起点索引交换(第1次起点0,第2次起点1,第n次起点n-1)。
3、重复步骤1和步骤2,直到数组排好序。
选择排序算法流程图:
选择排序时间复杂度:
忽略常数项即:
选择排序代码实现:
/**
* 选择排序
* @param array $arr
* @return array
*/
function selectionSort(array $arr) :array {
$count = count($arr);
for($i = 0; $i < $count; $i++){
$lower_index = $i;
for($j = $i + 1; $j < $count; $j++){
if($arr[$j] < $arr[$lower_index]){
$lower_index = $j;
}
}
if($i != $lower_index){
list($arr[$i], $arr[$lower_index]) = array($arr[$lower_index], $arr[$i]);
}
}
return $arr;
}
//example:
$arr = [4,2,7,1,3];
print_r(selectionSort($arr));
//output:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 7
)