首页 > 试题广场 >

针对二分查找算法,假设一个有序数组有 136 个元素,那么要

[单选题]

针对二分查找算法,假设一个有序数组有 136 个元素,那么要查找到第 10 个元素, 需要比较的元素为()

  • 68,34,17,9,13,11,10
  • 68,34,17,8,12,10
  • 69,35,18,10
  • 68,34,18,9,13,11,10
1. 看选项最后,是10,题目给的是“查找第10个元素”,也就是说,就是从1开始的。。。。。1+(136-1)/2=68
2. 10<68, 下次从1~67中找:1+(67-1)/2=34;
3. 10<34, 下次从1~33中找:1+(33-1)/2=17;
4. 10<17, 下次从1~16中找:1+(16-1)/2=8;
5. 10>8,    下次从9~16中找:9+(16-9)/2=12;
6. 10<12,   下次从9~11中找:9+(11-9)/2=10;
7. 10==10     return;


68--34--17--8--12--10
发表于 2017-09-06 11:07:10 回复(1)
B
看二分法实现细节,取中值时:mid=low+((high-low)/2);是取左中值
发表于 2017-04-03 13:31:28 回复(1)
发表于 2018-08-30 19:55:18 回复(0)
这题我是无语的。。我为何要按照出题人的二分习惯来写代码?f*ck..mid = low +high >>1;就不行。。还二分取第10个元素。。。
发表于 2018-01-17 14:47:49 回复(1)
一般不是应该从下标0开始吗?这样第一个数应该是(0+135)/2 = 67, 只有我一个人这样想吗。。。
发表于 2017-08-29 15:52:36 回复(7)
NJ头像 NJ
68,34,17,8,13,10 正确答案应该是这个吧!
发表于 2017-08-16 20:19:54 回复(5)
看这题我还是懵掉的,为了出题而出题是最low的。
有序数组查找第10个元素,直接打印第十个元素。。为什么要二分查找。。二分查找的题目不是很多吗。
发表于 2017-09-19 15:38:11 回复(0)
136 10

(1+136)/2=68
(1+67)/2=34
(1+33)/2=17
(1+16)/2=8
(9+16)/2=12
(9+11)/2=10
所以是68,34,17,8,12,10
发表于 2017-09-07 14:54:21 回复(0)
17/2 = 9 了😂😂
发表于 2019-07-25 10:31:13 回复(0)
Mid= low+( high-low)/2
发表于 2019-03-07 19:18:31 回复(0)
一般不是应该从下标0开始吗?这样第一个数应该是(0+135)/2 = 67。
结果:67,33,16,7,11
发表于 2019-02-19 14:24:40 回复(0)
比的是下标,不是元素
发表于 2018-09-25 13:02:03 回复(0)
mid=low+(high-low)/2;
发表于 2018-08-26 21:10:36 回复(0)