408的四门科目不谈最重要的数据结构与算法,其他的比如OS的进程管理和内存管理,计网中老生常谈的TCP/IP模型,计组中数据的表示等等,每一个都是一名合格的程序员应该重点掌握的内容。
所以:虽然你不一定考研,但跟着做题加深理解总没错的 ✔
每天都会更新2~3篇直到追上进度(上次一天更了10篇),欢迎关注我和我的专栏。
习题来源于@王道微博
解析都是我自己写的,如有问题或错漏烦请评论告知。
🌴数据结构
若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为____(中国科学院大学2012)
A. 1,2,3
B. 9,5,2,3
C. 9,5,3
D. 9,4,2,3
答案及解析
答案:D
🔊 折半查找的基本思想是:
- 首先以整个查找表作为查找范围,用查找条件中给定值k与中间位置结点的关键字比较,若相等,则查找成功。否则转2。
- 根据比较结果缩小查找范围,如果k的值小于关键字的值,根据查找表的有序性可知查找的数据元素只有可能在表的前半部分,即在左半部分子表中,所以继续对左子表进行折半查找,否则转3。
- 若k的值大于中间结点的关键字值,则可以判定查找的数据元素只有可能在表的后半部分,即在右半部分子表中,所以应该继续对右子表进行折半查找。
- 每进行一次折半查找,要么查找成功,结束查找,要么将查找范围缩小一半,如此重复,直到查找成功或查找范围缩小为空即查找失败为止。
既然是有序列第一个元素放A[1]中,现进行二分查找 1 + 18 2 = 9 \frac{1+18}{2} = 9