一.定义理解
即将一个数插入到前面已经排好的有序数列中,得到的数列仍有序。
二.算法描述(从大到小排序)
1.自认为第一个元素是有序的
2.拿出下一个元素,从该元素前面的有序数列的最后一个元素开始从后往前扫面
3.如果该元素(拿出的元素)大于新元素(扫描到已排序数列中的某元素),新元素后移一个位置
4.重复步骤3,知道该元素小于新元素,终止该元素的向前扫描
5.将该元素插入到插入到下一个位置
6.重复步骤2,3,4,5
三.有趣视频——助理解
四:举例(3,6,5,8,7排序)
第一次 | 6 | 3 | 5 | 8 | 7 |
---|---|---|---|---|---|
第二次 | 6 | 5 | 3 | 8 | 7 |
第三次 | 8 | 6 | 5 | 3 | 7 |
第四次 | 8 | 7 | 6 | 5 | 3 |
四.vb代码展示
<span style="font-style: normal;"> <span style="font-family:SimSun;font-size:18px;">For i = 2 To n '进行扫描的次数
If a(i) > a(i - 1) Then
tmp = a(i) '保存大值
For j = i - 1 To 1 Step -1 '从后往前坐比较
If tmp < a(j) Then Exit For '排序时遇到比前一个数小时,终止次轮比较
a(j + 1) = a(j) '小值后退一个位置
Next j
a(j + 1) = tmp '退出for循环时,把tmp赋给a(j+1),否则会出现重复
End If
Next i</span></span>
五.有关算法连接
选择排序:http://m18713008480.blog.163.com/blog/static/253452025201642242841585/
冒泡排序:http://m18713008480.blog.163.com/blog/static/253452025201651172627678/