校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 直接插入排序
题目

对记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第八个记录45插入到有序表时,为找到插入位置需比较()次

A.4

B.6

C.5

D.3

解答

正确答案是 C

由插入排序算法,当要插入第八个元素时,前七个元素已经有序为:
15 23 38 54 60 72 96
第八个记录45从后向前比较到38时,45>38,找到了前八个元素有序应该放的位置,停止循环,从96到38,共比较了5次。
C 13条回复 评论
小飞鞋

for(i=2;i<=length;i++){
if(r[i]<r[i-1]) {
r[0]=r[i];                  //放在哨兵的位置
for(j=i-1;r[j]>r[0];j--)
{r[j+1]=r[j];}              //后移
r[j+1]=r[0];               //哨兵的记录放在该位置
}
}
到45时,
已有:15 23 38 54 60 72 96
比较45<96,然后依次后移,72 60 54, 38不满足,循环停止。共比较5次。

发表于 2018-10-13 13:40:40
0 0
雪糕乐

这题直接数前面有几个比它自己大的数然后 +1 就好了

插入排序从后往前比, 当第八个记录45要插入时, 前面必然是有序的, 所以要比较比它本身大的数. 

+1是因为最后还要和比它小一点的数比较一次, 才能确定它插入的位置

所以答案是: 4+1

发表于 2018-10-13 13:40:24
0 0