首页 > 试题广场 >

在顺序表(8,11,15,19,25,26,30,33,42

[填空题]

在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为1

8  11  15  19  25 26  30  33  42  48  50
0   1    2   3    4   5    6    7    8    9    10
假设低下标用low表示,高下标用high表示。
查找20:
开始low = 0, high = 10
mid=(low+high)/2
if mid==num
  return ;
if mid>num  
  high = mid-1;
if mid<num 
  low = mid +1;
第一次查找,找到中心的下标为(0+10)/2 = 5,即26,由于20小于26,所以,调整low = 0,high = 4
第二次查找,找到中心的下标为(0+4)/2 = 2,即15,由于15小于20,所以,调整low = 3,high = 4
第三次查找,找到中心的下标为(3+4)/2 = 3.5,向下取整取3,即19,由于19小于20,所以,调整low = 4,high = 4
第四次查找,找到中心的下标为4,不是20
发表于 2017-05-18 19:41:39 回复(0)
8  11  15  19  25 26  30  33  42  48  50
0   1    2   3    4   5    6    7    8    9    10
假设低下标用low表示,高下标用high表示。
查找20:
开始low = 0, high = 10
第一次查找,找到中心的下标为(0+10)/2 = 5,即26,由于20小于26,所以,调整low = 0,high = 4
第二次查找,找到中心的下标为(0+4)/2 = 2,即15,由于15小于20,所以,调整low = 2,high = 4
第三次查找,找到中心的下标为(2+4)/2 = 3,即19,由于19小于20,所以,调整low = 4,high = 4
第四次查找,找到中心的下标为4,不是20
发表于 2017-05-17 20:13:16 回复(0)