内容正文:
算法复习专题七 插入排序
【课前检测】
1.算法原理:
每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。
2.算法实现步骤:
案例:9,3,1,4进行升序插入排序:
遍数
已排好的数组序列
待排数组序列
比较的内容
本遍排好的结果
第一遍
9
3,1,4
9和3
3,9, 1,4
第二遍
3,9
1,4
1和9,1和3
1,3,9,4
第三遍
1,3,9
4
4和9,3和4
1,3,4,9
实践:请写出数组序列5,2,1,3,4的升序插入排序过程
遍数
已排好的数组序列
待排数组序列
比较的内容
本遍排好的结果
第一遍
第二遍
第三遍
第四遍
升序插入排序的流程:
遍数
待插入元素
比较元素
如果序列不符
本遍排好的结果
1
第2个
第2个和第1个
从第1个开始向后退,空出位置,一直到前面的数小于待插入元素为止
前2个有序
2
第3个
第3个和第2个、第1个……一直到小于待插入元素为止
从第2个开始向后退,空出位置,一直到前面的数小于待插入元素为止
前3个有序
3
第4个
第4个和第3个、第2个……一直到小于待插入元素为止
从第3个开始向后退,空出位置,一直到前面的数小于待插入元素为止
前4个有序
n-1
第n个
总结:5个数需要进行_________遍排序,最多___________次数组元素的比较,最少_________次数组元素的比较。n个数需要进行_______________遍排序,最多__________次数组元素的比较,最少_________次数组元素的比较。
3.算法实现基础代码
方法二:
方法一:
For i = 2 To n '升序插入排序
If a(i) < a(i - 1) Then
___________________
For j = i - 1 To 1 Step -1
If tmp > a(j) Then Exit For
a(j + 1) = a(j)
Next j
___________________
End If