• 直接选择排序平均效率,最好情况,最坏情况均为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 )

posted on 2012-08-18 17:04  ZimZz  阅读(750)  评论(1编辑  收藏  举报