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分钟带你理解算法中二分查找的主要内容,如果未能解决你的问题,请参考以下文章