- 直接选择排序平均效率,最好情况,最坏情况均为O(n^2)
1 <?php 2 #简单选择排序 3 function selectSort(Array $arr) { 4 $len = count($arr); 5 for($i = 0; $i < $len; $i++) { #一共进行$len轮查找 6 $minInx = $i; 7 for($j = $i; $j < $len; $j++) { #每轮从第$j个元素开始,找出一个最小的元素,并和第$j个元素交换位置 8 if($arr[$minInx] > $arr[$j]) $minInx = $j; 9 $tmp = $arr[$i]; 10 $arr[$i] = $arr[$minInx]; 11 $arr[$minInx] = $tmp; 12 } 13 } 14 return $arr; 15 } 16 17 $arr = array(5, 4, 1, 9, 2, 10, 8); 18 $arr2 = selectSort($arr); 19 print_r($arr2); 20 ?>
输出
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 8 [5] => 9 [6] => 10 )