排序算法__插入排序

 

 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  */
View Code

 

posted @ 2017-02-22 01:24  _logan  阅读(91)  评论(0编辑  收藏  举报