折半查找有序表(2,5,8,20,25,36,40,60),若查找元素60,需依次与表中元素( )进行比较。

admin2014-08-29  23

问题 折半查找有序表(2,5,8,20,25,36,40,60),若查找元素60,需依次与表中元素(    )进行比较。

选项 A、20,36,40,60
B、25,40
C、25,40,60
D、20,36,40

答案A

解析 第一步:
设low指向首元素(赋值为1),high指向尾元素(赋值为8),计算下边中值得:mid=((10w+high)/2)=4则有  R[mid]=R[4]=20>60
第二步:由以上判断可知,如果记录中存在60,则一定在R[4]之后(因为R是非递减有序的)。故修改low和high如下:high值不变,仍然有high=8;10w的值修改:使其指向R[4]的后一个元素,即使low=mid+1=5;比较范围缩小至R[5]~R[8]。mid=((10w+high)j2)=6则有R[mid]=R[6]=36<60
第三步:由以上判断可知.如果记录中存在60,则一定在R[6]之后(同样因为R是非递减有序的)。故修改low和high的值如下:low的值修改,使其指向R[6]的下一个元素,即low=mid+1=7;high不变,仍然是8。mid=((10w+high)/2)=7则有R[mid]=R[7]=40。
第四步:由以上判断可知,如果记录中存在60,则一定在R[7]之后(同样因为R是非递减有序的)。故修改10w和high的值如下:low的值修改,使其指向R[7]的下一个元素,即low=mid+1=8;high不变,仍然是8。mid=((10w+high)/2)=8则有R[mid]=R[8]=60。查找成功。
转载请注明原文地址:https://kaotiyun.com/show/dyvR777K
0

最新回复(0)