选择排序selectSort()

 1 // 它的工作原理是每一次从待排序的数据元素中选出最小的一个元素(循环一圈就会把一个最小的值放在此次循环的$i上),将该元素放到该轮的索引位置(该轮的索引指外层循环的$i)上,
 2 function SelectSort(array $container)
 3 {
 4     $count = count($container);
 5     for ($i = 0; $i < $count; $i++){
 6         $k = $i;
 7         for ($j = $i + 1; $j < $count; $j++){
 8             if($container[$j] < $container[$k]){
 9                 $k = $j;
10             }
11         }
12         if($k != $i){
13             $temp          = $container[$i];
14             $container[$i] = $container[$k];
15             $container[$k] = $temp;
16         }
17     }
18     return $container;
19 }
20 
21 //假设测试这个数组[45,23,12,55,6];
22 // 第一次外循环
23 $k = $i = 0;
24 $j=$i+1;
25 // 内循环第一次  
26 $k = 0;$j = 1;$container[$j] = $container[1] = 23; $container[$k] = $container[0] = 45;  $k索引上的值大于$j索引上的的值所以此时  $k = $j =1;
27 // 内循环第二次  
28 $k = 1;$j = 2;$container[$j] = $container[2] = 12; $container[$k] = $container[1] = 23;  $k索引上的值大于$j索引上的的值所以此时  $k = $j =2;
29 // 内循环第三次  
30 $k = 2;$j = 3;$container[$j] = $container[3] = 55; $container[$k] = $container[2] = 12;  $k索引上的值小于$j索引上的的值所以此时  $k没有进入if判断中,所以$k还是2;
31 // 内循环第四次  
32 $k = 2;$j = 4;$container[$j] = $container[4] = 6; $container[$k] = $container[1] = 12;  $k索引上的值大于$j索引上的的值所以此时  $k = $j =4;
33 //此时内层循环结束,$k=$j=4;
34 因为$k=4;$i=0;不相等,所以$temp = $container[$i] = 45; $container[$i] = $container[$k] = 6; $container[$k] = $temp = 45;
35 此时原数组变为[6,23,12,55,45],第一轮循环将6这个最小值放在循环开始的初始位置
36 //第二次外循环
37 [6,12,23,55,45]
38 //第三次外循环
39 [6,12,23,55,45]
40 //第四次外循环
41 [6,12,23,45,55]
42 // 第四次循环结束完成排序
原文地址:https://www.cnblogs.com/xiaofeilin/p/14963258.html