计算机入门必备算法——二分查找法

1、引言

笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进。不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或者在一些生产环境中会应用一些算法来解决实际问题。

就比如今天要介绍的第一个查找算法——二分查找法。假设要在电话薄中找一个名字为K开头的人,很习惯的办法就是从头开始翻页,直到进入以K打头的部分。但是这种方法的缺陷就是要逐一查找,时间较长。

于是我们可以有另外一个思路就是每次从中间开始查找,而以K打头的名字就在电话簿中间。再举一个简单的场景,假设登录Facebook时,Facebook会验证是否为自己网站的用户,那就必然要去数据库中作比对,如果逐一对比则用户等待的时间过长,影响用户体验,更合乎逻辑的做法是从中间开始查找,这样就会节约很长的等待时间。

2、二分查找法

二分查找是一种算法,其输入是一个有序的元素列表(注意:列表必须是有序的)。如果要查找的元素包含在列表中,二分查找则返回其位置,否则返回-1。

2.1 二分查找法的原理

举一个示例来讲解二分查找的工作原理。想必大家都玩过1~100的猜数字游戏,目标是以最少的次数猜到这个数字。每次猜测后,会有人告诉你这个数和要找的数是大了还是小了。如果我们从1开始慢慢一个一个数字进行猜测,这样的效率是很慢的,我们通常把这样的查找方式叫做简单查找,更准确的说法是傻找。

猜数字游戏

比较合理的查找方法就是从中间


版权声明:本文为qq_37036915原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。