栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 二分查找

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 二分查找

一、二分查找的步骤:

1、定义一个有序数组

2、定义左边界L、右边界R、确定搜索范围、循环执行二分查找

3、获取中间索引 M = Floor((L + R) / 2) 向下取整(JavaScript里是小数)

4、中间索引的值A[M]与待搜索的值T进行比较

4.1 A[M] = T,表示找到返回中间索引

4.2 A[M] > T,中间右侧的其它元素都大于T,无需比较,中间索引左边查找,M - 1设置为右边界、重新查找

4.3 A[M] < T,中间左侧的其它元素都小于T,无需比较,中间索引右边查找,M + 1设置为左边界、重新查找

5、当L > R时,表示没找到,返回-1结束循环

二、代码实现

三、经典大厂面试题

1、有一个有序表为1、5、8、11、19、22、31、35、40、45、48、49、50,当二分查找值为48的结点时,查找成功需要比较的次数: 4次 (京东实习生面试题)

思路:有序表集合长度为奇数二分取中间,为偶数二分取中间靠左

先取31,再取45,再取49,最后取48.

2、使用二分法在序列1,4,6,7,15,33,39,50,64,78,75,81,89,96中查找元素81时需要经过(4)次比较。 (美团点评校招)  78和75元素应该对调下。

3、在已经的128个数组中二分查找一个数,需要比较的次数最多不超过多少次  (7)

(北京易道博识社招)   2的7次方是128

2的几次方 = 128 或者  128 /2/2 ... 直到1

问题转化为log 以2为底 128,如果手边有计算器,使用科学计算器来计算。

用log 10 为底 128 /  log 10 为底 2

是整数,则该整数即为最终结果

是小数,则舍去小数部分,整数加一为最终结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号