插入排序

Posted w&y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入排序相关的知识,希望对你有一定的参考价值。

插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 
插入排序方法分直接插入排序和折半插入排序两种。

下图演示了对4个元素(4,3,1,2)进行直接插入排序的过程,共需要(a),(b),(c)三次插入。

 

代码示例:

 1 <?php
 2     //插入排序
 3     include "show.php";
 4     
 5     /**
 6     * 直接插入排序
 7     */
 8     function insert_sort(&$data)
 9     {
10         $length = count($data);
11         //$length个数组元素,需要循环$length-1次
12         for($i=1; $i<$length; ++$i)
13         {
14             $key = $data[$i];
15             $j = $i - 1;
16             //通过比较找到需要插入的位置
17             while($j>=0 && $data[$j] > $key)
18             {
19                 $data[$j+1] = $data[$j];
20                 $j--;
21             }
22             $data[$j+1] = $key;
23         }
24     }
25     
26     /**
27     * 折半插入排序
28     */
29     function binary_insert_sort(&$data)
30     {
31         $length = count($data);
32         for($i=1; $i<$length; ++$i)
33         {
34             $key = $data[$i];
35             $low = 0;
36             $high = $i - 1;
37             while($low <= $high)
38             {
39                 $mid = ceil(($low+$high)/2);
40                 if($data[$mid]<$key)
41                 {
42                     $low = $mid + 1;
43                 } else {
44                     $high = $mid - 1;
45                 }
46             }
47             for($j=$i; $j>$low; --$j)
48             {
49                 $data[$j] = $data[$j-1];
50             }
51             $data[$low] = $key;
52         }
53     }
54     
55     $arr = array(8,3,9,34,1,3);
56     show($arr);//打印数组
57     insert_sort($arr);
58     //binary_insert_sort($arr);
59     show($arr);
View Code

 

运行结果:

以上是关于插入排序的主要内容,如果未能解决你的问题,请参考以下文章

KDoc:插入代码片段

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

将代码片段插入数据库并在 textarea 中以相同方式显示

关于在各浏览器中插入音频文件的html代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段