今天分享一道简单的笔试题,题目来源于京东校园招聘笔试真题。你做出这道简单的题目需要花费多少东呢?
题目描述
有一个有序表为 {1,5,8,11,19,22,31,35,40,45,48,49,50} ,当二分查找值为 48 的结点时,查找成功需要比较的次数( )
- A、4
- B、3
- C、2
- D、1
题目分析
一道送分题。
有序表的长度为 13,根据 二分查找法 查找数的特性,每次都 n/2 进行折半查找。
13 / 2 = 6
6 / 2 = 3
3 / 2 = 1
1 / 2 = 0
最多需要 4 次就能得出结果。
列表下标索引从零开始标记。
这道题目需要查找的是 48 。
第一次,求出 [0,12] 中间节点。
0 + (12 - 0) / 2 = 6
a[6] = 31 < 48
区间变为 [7,12]。
第二次,求出 [7,12] 中间节点。
7 + (12 - 7) / 2 = 9
a[9] = 45 < 48
区间变为 [10,12]。
第三次,求出 [10,12] 中间节点。
10 + (12 - 10) / 2 = 11
a[11] = 49 > 48
区间变为 [10,11]。
第四次,求出 [10,11] 中间节点。
10 + (11 - 10) / 2 = 10
a[10] = 48 = 48
找到啦!
![0b7f46a98423e6e6dfe82eee2a098f2a.png](https://i-blog.csdnimg.cn/blog_migrate/94930198f23187c9534b5914fd7a8e26.jpeg)
我的个人博客大改版,200 篇原创算法等你来看!
五分钟学算法-和程序员小吴一起学算法www.cxyxiaowu.com![552cb298a0a4ade20e7f0faee9f50576.png](https://i-blog.csdnimg.cn/blog_migrate/ef9ebc535a9e6135696bac4a358fff9d.png)