二分查找的实现
Posted 七月在线julyedu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找的实现相关的知识,希望对你有一定的参考价值。
●
二分查找的实现
题目描述
下面是折半查找的实现,data是按升序排列的数据,x是查找下标,y是查找的上标,
v是查找的数值,返回v在data的索引,若没找到返回-1。代码不正确是____。
分析与解法
解析:上下标没有写清楚,题目所指的应该是[x,y),这样5应该是m-1
而在下标为[x,y]的情况下,1,4,5都是有问题的。。。。正确版本应该是这样吧
while(x<=y) {
m = x + (y-x)/2; //2
if(data[m] == v) return m; //3
else if(data[m] > v) y = m-1; //4
else x = m+1; //5
}
补充:这里下标是个坑,记住上限有没有包含就可以对付1,4,5处的问题(熟记理解两个版本的代码区别),然后是2,写成x+(y-x)/2是防止xy都很大的情况下x+y越界。这样的话应对二分查找应该够了
题目来源:七月在线官网(www.julyedu.com)——面试题库——面试大题——算法
END
今日学习推荐
【机器学习集训营第八期】
火热报名中
2019年5月6日开课
前120人特惠价:14999
报名加送18VIP[包2018全年在线课程和全年GPU]
且两人及两人以上组团还能各减500元
有意的亲们抓紧时间喽
julyedukefu_02
扫描下方二维码
免费试听
☟
●
●
●
●
●
●
●
●
扫描下方二维码 关注:七月在线实验室
后台回复:100 免费领取【机器学习面试100题】
后台回复:干货 免费领取【全体系人工智能学习资料】
后台回复: 领资料 免费领取全套【NLP工程师必备干货资料】
以上是关于二分查找的实现的主要内容,如果未能解决你的问题,请参考以下文章