选择排序算法的原理如下:
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
使用PHP实现如下:
function selection_sort($array){
$count=count($array);
for($i=0;$i<$count-1;$i++){
$min=$i;
for($j=$i+1;$j<$count;$j++){
//由小到大排列
if($array[$min]>$array[$j]){
//表明当前最小的还比当前的元素大
$min=$j;
//赋值新的最小的
}
}
/*swap$array[$i]and$array[$min]即将当前内循环的最小元素放在$i位置上*/
if($min!=$i){
$temp=$array[$min];
$array[$min]=$array[$i];
$array[$i]=$temp;
}
}
return $array;
}
$array=array(9,3,2,7,8,5,6);
print_r(selection_sort($array));
结果输出:Array ( [0] => 2 [1] => 3 [2] => 5 [3] => 6 [4] => 7 [5] => 8 [6] => 9 )
时间复杂度:
- 最好:O(n²)
- 最坏:O(n²)
- 平均:O(n²)
空间复杂度:O(1)
选择排序是一种不稳定的排序算法