二分算法(Binary Search)是生活中非常常用的折半算法,能解决快速查找、快速定位的问题,主要用到数学和逻辑代码块。
本示例程序演示了采用普通遍历的方式和二分的方式分别需要几次能够猜中随机给出的数字。



普通遍历方式很简单,设计一个 1 ~ 100的循环,每次比对一下是否和上面的随机数相等,相等就是猜中了,就不用继续猜了。代码如下:

二分方式代码如下:

原理示意图如下:

注意点:计算中间二分数字的时候,需要向下取整,否则计算出来的是小数,当然不是我们想要的,我们的前提是猜整数数字。
举个例子:
App随机给出的数字是17,我们依次猜的是:
点击按钮开始测试,列表中会显示两种方式猜中需要的次数,二分的话还会输出每次猜的具体是哪个数字。
测试下来,我们会发现,都是7次或7次之内就能猜中,其中的原理是什么呢?
算法复杂度是O(logN)。2^7 = 128 > 100,因此最多7次能猜中。大家可以思考并尝试一下将100改为1000,这时最多需要几次猜中?
不仅如此,在计算机科学中,二分算法(Binary Search)也是非常基础的算法,使用场景非常的多,有序表的检索、数据库索引技术等。