有序关键字9、45、67、69、72、75、79、80、85、99,查找是不等概率的,其权值分别为:1、2、1、3、5、4、3、2、2、1,请设计查找过程。
思路:原序列是有序的;并且从权值分布来看,序列中关键字的权值从中间部分向两端减少,所以使用折半查找能使得平均查找长度较小。查找过程:先确定待查记录所在的范围(区间1-10),然后逐步缩小范围直到找到或找不到该记录为止。假设指针low=1和high=10分别指示待查元素所在范围的下界和上界,指针mid指示区间的中间位置,即mid=⌊(low+high)/2⌋。若待查找元素x小于mid的值,那么继续在前半区间进行查找,令high=mid-1;若待查找元素x大于mid的值,那么继续在后半区间进行查找,令1ow=mid+1。直到找到与元素x相等的元素;或者待查记录所在的范围为0,则表示查找失败,没有该元素值。通过如图的折半查找判定树:
计算平均查找长度=(1×5+2×(2+2)+3×(1+1+4+2)+4×(3+3+1))/10=6.5。
【考点】本题考查数据结构--查找。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811