漫画:什么是二分查找?
【摘要】 本文用漫画的形式轻松带您了解什么是二分法查找算法。
————— 第二天 —————
什么意思呢?我们来举两个栗子:
给定一个有序数组
2,5,7,9,12,14,20,26,30
Case 1:
Case 2:
————————————
为什么说这样效率最高呢?因为每一次选择数字,无论偏大还是偏小,都可以让剩下的选择范围缩小一半。
给定范围0到1000的整数:
第一次我们选择500,发现偏大了,那么下一次的选择范围,就变成了1到499:
第二次我们选择250,发现还是偏大了,那么下一次的选择范围,就变成了1到249:
第三次我们选择125,发现偏小了,那么下一次的选择范围,就变成了126到249:
以此类推,最坏的情况需要猜测多少次呢?答案是 log1000 = 10次,也就是让原本的区间范围进行10次 “折半”。
刚才我们所分析的是猜数字的游戏。如果我们把场景转换成最初的面试问题:在包含1000个整型元素的有序数组中查找某个特定整数,又该如何去做呢?
同样道理,我们可以首先判断下标是499的元素(因为数组下标从0开始,到999结束),如果元素大于要查找的整数,我们再去判断下标是249的元素,然后判断下标124的元素......以此类推,直到最终找到想要的元素,或者选择范围等于0为止。
上述这个过程,就是所谓的二分查找算法,查找的时间复杂度是log(n)。
本文转载自微信公众号【java学习之道】。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)