10分钟带你理解算法中二分查找

Posted 潭州Python

tags:

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

10分钟带你理解算法中二分查找

二分查找

        一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。

工作原理

        假如我现在脑海中想到一个1-100的列表,需要你以最小的次数猜一下我喜欢哪一个数字,你每一次猜测后,我会说你猜的数字小了,大了或者猜对了。

        假设你从1开始依次猜.猜测过程会是1,2,3,4,5...100。

        这就是简单查找,是最笨的方法,每次猜测都只能排除一个排除一个数字,如果我想的是99的话,需要猜99次才能猜到。
        现在想一个好的法子。
        从50开始,小了,但是会排除一半的数字,因此你就知道1-50的都小了,接下来你可以猜75。
        大了,那么剩下来的数字又排除一半,你猜测的是中间数字,从而每次都将剩下的数字排除一半,接下来,你可以猜63(50和75中间的数字)。
        因此,不管我心里面想的是什么数字,都可以在7次之内猜到,因为每猜一次都可以排除一半的数字。
        假设在一个列表含有240000个身份证号码,需要查找一个身份证,如果使用之前的简单查找,估计会懵逼。
        而使用刚才的方法查找只需要18步就可以找到,而这种方法我们在算法中叫二分查找。
        一般而言,对于包含n个元素的列表,用二分查找只需要logn步,而简单查找最多需要n步。

代码实现二分查找


以上是关于10分钟带你理解算法中二分查找的主要内容,如果未能解决你的问题,请参考以下文章

带你快速记住二分查找算法

17道题带你理解二分查找

最短的时间了解二分查找

五千字长文带你学习 二分查找算法

查找算法之“二分查找”

LeetCode面试刷题技巧-二分查找算法(下):通过 LeetCode 学习二分查找算法-销售价值减少的颜色球