对关键码序列(9,12,15,20,24,29,56,69,87)进行二分查找(

免费题库2022-08-02  42

问题 对关键码序列(9,12,15,20,24,29,56,69,87)进行二分查找(折半查找),若要查找关键码15,则需依次与(  )进行比较。A.87、29、15B.9、12、15C.24、12、15D.24、20、15

选项 A.87、29、15
B.9、12、15
C.24、12、15
D.24、20、15

答案 C

解析 二分法查找(折半查找)的基本思想是(设R[low,…,high]是当前的查找区):
①确定该区间的中点位置:mid=[(low+high)/2];
②将待查的k值与R[mid].key比较,若相等,则查找成功并返回此位置,否则需确定新的查找区间,继续二分查找,具体方法如下:若R[mid].key>k,则由表的有序性可知右子表R[mid+1,…,high].key均大于k,因此若表中存在关键字等于k的结点,则该结点必定是在位置mid左子表R[low,…,mid–1]中。因此,新的查找区间是左子表R[low,…,high],其中high=mid–1;若R[mid].key<k,则要查找的k必在mid的右子表R[mid+1,…,high]中,即新的查找区间是右子表R[low,…,high],其中low=mid+1;若R[mid].key=k,则查找成功,算法结束;
③下一次查找是针对新的查找区间进行,重复步骤①和②;
④在查找过程中,low逐步增加,而high逐步减少。如果high<low,则查找失败,算法结束。
由二分查找的流程可知,本题正确答案为C。
转载请注明原文地址:https://tihaiku.com/congyezige/2426547.html

最新回复(0)