首页 > 试题广场 >

用二分法查找表 (a0,a1,a2,a3,……a16) ,需

[单选题]

用二分法查找表 (a0,a1,a2,a3,……a16) ,需要比较 2 次才能找到的元素是(

  • a7和a16
  • a11和a13
  • a1和a14
  • a3和a12
选项全都是错的吧?应该是a3和a12
发表于 2017-06-08 16:37:14 回复(2)
第一次找中间 mid = 8 比较 第一次比较不相同 mid =(7 +0)/2=3 或 mid =(9+16)/2=13
发表于 2017-09-05 10:59:52 回复(3)
第一次:比较:(0+16)//2 = 8,比较a8
第二次:比较: (0+7) // 2 = 3 或者  (9+16) // 2=12
发表于 2019-06-28 11:31:45 回复(0)
应该是a4和a12吧
发表于 2017-09-04 12:32:01 回复(4)
注意:前提一定要是有序列表 数组中的比较数如果大于待查数,数组下标减1,反之加1。如果刚好等于就取下标对应的值。 这题是要比较两次, 第一次比较:下标(0+16)/2=8 所以比较a8 第二次比较: 如果a8大于待查值,(a8不需再查)下标就减1, (0+7)/2=3.5,向下去整,所以查a3。 如果a8小于待查值,(a8不需再查)下标就加1, (9+16)/2=12.5,向下去整,所以查a12。
发表于 2019-11-08 01:15:34 回复(1)
a3和a12是对的
发表于 2017-11-14 16:53:26 回复(0)
第一次:比较:(0+16)//2 = 8,比较a8
第二次:比较: (0+7) // 2 = 3 或者  (9+16) // 2=12
发表于 2020-09-01 09:15:35 回复(0)
<p>如果搜索区间用开区间(high=middle,low=middle),那结果就是a4,a12。</p><p>如果搜索区间是闭区间(high=middle-1,low=middle+1),那结果就是a3,a12。</p>
发表于 2020-07-01 18:43:30 回复(0)
a1 a4 a9 a14
画出树
                8                     (0+16)/2
               /  \
             3   12                 (0+7)/2     (8+16)/2
            / \    / \
          1  4  9  14             (0+2)/2    (3+6)/2    (8+11)/2    (12+14)/2
发表于 2020-05-27 17:21:50 回复(0)
<p>首次比较是 (0 + 16)/ 2 与a8比较</p><p>第二次的比较区间是 (0,7)与(9,16)</p><p>所以是 (0+7)/ 2 = 3或者(9+16)/2=12</p>
发表于 2020-05-05 09:18:14 回复(0)
答案应该是a[3]和a[11]
发表于 2017-11-29 19:15:01 回复(0)
表示给出的正确答案没理解 求解释
发表于 2017-08-28 17:40:07 回复(0)