问题 单项选择题

数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算法中的______的两趟排序后的结果。

A.选择排序

B.冒泡排序

C.插入排序

D.堆排序

答案

参考答案:C

解析:直接插入排序是一种最基本的排序算法,基本操作为:将一个记录插入到一个已经排好序的有序表中,从而得到一个新的、长度增1的有序表。
一般情况下,第i趟的操作为:在含有i-1个记录的有序子序列r[1..i-1]中插入一个新记录r[i],变成含有i个记录的有序序列r[1..i]。设置r[0]为空值,从r[1]开始保存信息,可首先将待插入的记录r[i]复制到r[0]中,如下所示:
[*]
可把r[0]看成是r[i]的备份,以后从r[1]~r[i-1]查找插入位置时可直接同r[0]比较,而且r[i]也可被覆盖了。因为r[i]复制到r[0]后,可认为已经空出了r[i]。考虑从后向前比较,只要r[i-1]≤r[i],则r[i]的位置不必改变,否则(即r[i-1]>r[i]),则将r[i-1]移动到r[i]处,然后再比较r[i-2]和r[0],依次等等。当最后找到一个比r[0]小的关键字时,将r[0]复制到此关键字的后面一个位置,结束。

填空题
单项选择题