采用折半查找算法有序表{7,15,18,21,27,36,42,48 ,51,5

admin2022-08-02  38

问题 采用折半查找算法有序表{7,15,18,21,27,36,42,48 ,51,54,60,72}中寻找值为 15 和38,分别需要进行( )次元素之间的比较。A.3和1B.3和2C.4和1D.4和3

选项 A.3和1
B.3和2
C.4和1
D.4和3

答案 D

解析 折半查找:又称二分查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。在这道题中,一共有12个数字组成的有序表,首先使用15进行查找,第一次和36进行比较,因为12/2=6,所以要和第6个数字进行比较,结果15比36小,那么接下来和前一个子表进行比较,第二次是和18进行比较,结果还是比18小,类似地,第三次和7进行比较,结果15比7大,最后和15比较,一共查了4次。同样地,38第一次和36比较,结果比36大,第二次和51比较,结果比51小,第三次和42比较,结果还是比42小,那么就没有更小的了,所以比较了3次,结果查无此元素。具体代码如下图所示。
转载请注明原文地址:https://tihaiku.com/congyezige/2416810.html

最新回复(0)