排序算法__插入排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 3 $arr=array(1,43,54,62,21,66,32,78,36,76,39); 4 5 function insertSort($arr) { 6 //i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了, 7 //间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列 8 for($i=1, $len=count($arr); $i<$len; $i++) { 9 //获得当前需要比较的元素值。 10 $tmp = $arr[$i]; 11 12 //内层循环控制 比较 并 插入 13 for($j=$i-1;$j>=0;$j--) { 14 //$arr[$i];//需要插入的元素; $arr[$j];//需要比较的元素 15 if($tmp < $arr[$j]) { 16 //发现插入的元素要小,交换位置 17 //将后边的元素与前面的元素互换 18 $arr[$j+1] = $arr[$j]; 19 20 //将前面的数设置为 当前需要交换的数 21 $arr[$j] = $tmp; 22 } else { 23 //如果碰到不需要移动的元素 24 //由于是已经排序好是数组,则前面的就不需要再次比较了。 25 break; 26 } 27 } 28 } 29 30 //将这个元素 插入到已经排序好的序列内。 31 //返回 32 return $arr; 33 } 34 35 $arr = insertSort($arr); 36 37 echo "<pre>"; 38 print_r($arr); 39 40 41 42 43 /* 44 Array 45 ( 46 [0] => 1 47 [1] => 21 48 [2] => 32 49 [3] => 36 50 [4] => 39 51 [5] => 43 52 [6] => 54 53 [7] => 62 54 [8] => 66 55 [9] => 76 56 [10] => 78 57 ) 58 */