首页 > 试题广场 >

若有 18 个元素的有序表存放在一维数组 A[19] 中,第

[单选题]
若有 18 个元素的有序表存放在一维数组 A[19] 中,第一个元素放 A[1] 中,现进行二分查找,则查找 A [ 3 ]的比较序列的下标依次为 (      )


  • 1,2,3
  • 9,5,2,3
  • 9,5,3
  • 9,4,2,3
注意题目意思:第一元素放到A[1],说明该数组下表1开始。第一次查找 , high = 18, M1 = (1 + 18)/2 = 9 ; A[3] < A[9],high = M1 -1 = 8; M2 = (1 + 8) / 2 =4, 依次类推
发表于 2018-04-30 16:37:16 回复(0)
第一次比较

第2次比较
第3次比较
第4次比较

发表于 2020-09-07 10:22:42 回复(1)
第一次:high1=18,low1=1,medium1=(high1+low1)/2=9
A[3]<A[9],进行下一轮比较
第二次:high2=medium1-1=8,low2=1,medium2=(high2+low2)/2=4
A[3]<A[4],进行下一轮比较
第三次:high3=medium2-1=3,low3=1,medium3=(high3+low3)/2=2
A[3]>A[2],进行下一轮比较
第四次:由于A[4],A[2]都比较与A[3]比较了,A[2]<A[3]<A[4],故直接取A[3],下标为3
发表于 2019-05-30 10:21:35 回复(0)
第一个元素放在A[1],是一个干扰条件,没什么用处,对于数组A[19]来说,二分查找, 第一次的low=0 high=19 除二取下整是9 第二次的low=0 high=9 除二取下整是4 第三次的low=0 high=4 除二取下整是2 第四次的low=2 high=4 除二取下整是3
发表于 2018-08-08 17:47:44 回复(6)
折半查找未找到值时如果大于中间值则low=mid+1;反之亦然
发表于 2017-08-04 00:24:40 回复(3)
D 就相当于下标为0到18 ,求下标为2
发表于 2017-07-22 18:57:54 回复(6)
二分查找只和数组下标有关,一般从0到数组长度减一,然后进行首尾索引相加除以二的结果作为起点索引或者终点索引, 二分查找,首尾下标除二之后,若查找数小于中间值,那么中间下标减一后为尾下标。若查找数大于中间值,那么中间下标加一后为首下标
编辑于 2022-07-08 11:40:21 回复(0)
① (1+18)/ 2 = 9
② (1 + (9 - 1))/ 2 = 4
③ (1 + 3)/ 2 = 2 
④  3
发表于 2021-03-09 13:10:30 回复(0)
二分查找只和数组下标有关,一般从0到数组长度减一,然后进行首尾索引相加除以二的结果作为起点索引或者终点索引
发表于 2017-11-26 14:33:39 回复(0)

[1, 18] (1+18)/2=9,左边

[1, 8](1+8)/2=4,左边

[1, 3](1+3)/2=2,左边

[2, 3]3,右边

编辑于 2020-03-25 00:18:24 回复(0)
注意向下取整
发表于 2019-02-18 00:17:40 回复(0)
这题是他的A[0] 不放东西?
发表于 2017-11-22 08:32:44 回复(0)
mid 9 4 2 3 left 1 1 1 3 right 18 8 3 3
发表于 2022-03-27 14:08:42 回复(0)
二分查找,下标0 1 2,偶数结尾再对半刚好是中间1,下标0 1 2 3,奇数结尾对半砍掉小数点,刚好是前一半的最后一位1
发表于 2022-02-28 00:59:40 回复(0)
这道题有问题吧,下标下标从1开始才对
发表于 2018-04-25 22:17:25 回复(0)
第一个元素放A1中,这句话可以这么理解,我们假设数组的0下标存放一个值x,从1下标开始存放我们的数,又假设存放的数是1-18,此时正好存放19个数,并且我们存放的数与下标对应,就可以算二分查找了😊
发表于 2024-03-22 19:49:14 回复(0)
(n-m)/2  与 3 相比;若出现不能整除 ,先左后右选择
发表于 2023-08-23 20:55:50 回复(0)
1~18
第一次:(1+18)/2=9   mid为9,不是答案,9变为右端点
第二次:(1+9)/2=5     mid为5,不是答案,5变为右端点
第三次:(1+5)/2=3     mid为3,是答案,结束
所以答案不应该是 9 5 3嘛
为什么答案解析在第二次和第三次都要把右端点移动一位?
发表于 2022-04-05 10:25:03 回复(1)
折半查找未找到值时如果大于中间值low=mid+1
发表于 2022-04-02 14:22:01 回复(0)
除2后的结果若为小数,定义为整型,只取整数部分,即取下限。
发表于 2022-03-29 19:59:43 回复(0)