1 <?php
2 /**
3 * 简单选择排序 simple selection sort
4 *
5 * 原理: 一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数。
6 */
7 function sort_simple_selection($list)
8 {
9 $len=count($list);
10 if(empty($len)) return$list;
11
12 for($i=0;$i<$len; $i++)
13 {
14 $min=$i;
15 for($j=$i+1; $j<$len; $j++)
16 {
17 //if($list[$j] > $list[$min]) // 从大到小
18 if($list[$j] <$list[$min]) // 从小到大
19 {
20 $min=$j;
21
22 }
23 echoimplode(',',$list)."#pos=".($min+1)." min=".$list[$min]."<br/>";
24 }
25 if($min!=$i)
26 {
27 $temp=$list[$i];
28 $list[$i] =$list[$min];
29 $list[$min] =$temp;
30 }
31 echo"-------------------------<br/>";
32 }
33 }
34
35 $list=array(4,3,2,1,5,7,3,7);
36 $list= sort_simple_selection($list);