通俗的介绍二分查找

Posted 文哲鉴书

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通俗的介绍二分查找相关的知识,希望对你有一定的参考价值。

大家有和同学或者朋友玩过「猜数字」的游戏吗?游戏的规则是这样的:一位同学在某个范围内想一个数字,另一位同学来猜,猜对后记录下猜出正确数字的所用的次数,完成后互换角色再猜一次,最终谁用的次数少谁就赢了。


今天我们聊的内容就是如何让你做这个游戏的常胜将军。我们使用的方法叫做「二分查找」法,这是计算机里查找东西时经常用到的一个方法。


概括的讲,二分查找就是在一个有顺序的一堆数据里面找出对的数的方法。具体做法时如下。


假如你们约定在 0 - 200 之间猜,首先第一次你要猜 100,如果是 100,那恭喜你,一次就猜对了。如果对方给你的反馈是大于 100,你就猜 150,反之就猜 50。接下来继续这样一半一半的去猜... 最终随着数字范围的不断缩小,你肯定会猜到对应的结果。


采用这种猜数字的是非常的快的。一般来说,有 n 个数字的话,它只要猜 log2n 就可以了,也就是说,你有 10000 个数字的话,大约只需要 14 次。


我们再稍微加大一点难度,如果给你一堆数字,怎么找出其中的某个数字呢?比如我给大家 1,5,23,9,25,90,120。大家可以找出 9 吗?大家应该一眼就找到了,但是如果数字多一点就不这么简单了。看了上面的例子,不通过「一眼看出」的方法,你能通过二分查找法找出数字 9 吗?


我再给大家讲一遍过程,首先第一步,我们要排序。这是二分查找必须要做的,上面「猜数字」游戏不用排序的原因是本来就已经有序了。


上面的数据排序之后是 1,5,9,23,25,90,120。我们先看中间的那个数 23,比 9 大,那我们去它的左边找,左边那一堆数只有四个,对于偶数个数,我们一般选中间一个的下一个,也就是 9 ,这时我们找到了,我们找了两次。


上面使用到的方法也是二分查找法。不知道各位看懂了吗?我没有给没学过计算机的人讲过类似的题目,不知道我今天讲的能否让你们听懂。说实话,写这种的有点费力。


这个思维可以用在生活中很多地方,比如你去图书馆找书,找电脑某个文件(先使用电脑的排序功能排好序),找你的某个物品,买东西的时候找合适价格的物品,等等等等,如果你把今天这个思维模式用到日常生活中,相信会帮你节约一些时间!


今天早上去看了《蜘蛛侠》,目前豆瓣评分有 8.2 分,这部电影的取景非常不错,看完之后我决心近几年一定要去欧洲一次。总之是一部值得观看的放松电影。


想问一下大家获取知识的途径是哪些呢?如果你说知乎的话,强烈推荐不要使用了。当然了,你想让一个人表面上学到东西,学会写段子,耍小聪明,获得不系统的认识(注意不是知识)的话,欢迎推荐他用知乎。你要告诉他:有问题,上知乎。


最近我们的管理越来越严格了,至于哪方面的管理,我想你们也懂吧?很多事,台面上都不让讲。我们唯一能做的就是不断提高自己,这样才能对一些事物有自己的看法,而不是听那些媒体的看法。


任何关于「鸿蒙系统」的新闻,推荐不要看。从目前的技术角度来看它根本没有吹的那么牛。如果它真的像媒体说的那么厉害,为什么谷歌不做?苹果不做?反问一下答案就显而易见了。昨天看了一个新闻,吹鸿蒙什么今年年底就上,什么编译速度快 60%,你们是不是少加了一个 0?有些心疼开发「鸿蒙」的同行们,也许今天你们又在加班吧。


最后,今天早上起来看到订阅号改版了,你们是否喜欢微信的这个改动呢?

(完)

以上是关于通俗的介绍二分查找的主要内容,如果未能解决你的问题,请参考以下文章

二分查找算法详解

二分查找的高阶应用实战

二分法查找

二分法查找

密码破译暴力查找与二分查找

二分查找 - 基础篇