漫谈算法——二分查找

331 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情

前言

我们讲完了各种各样的排序算法后,来讲一下我们的查找算法,最为重要的一个查找算法就是——二分查找(Binary Search)算法,也称为折半查找。因为在大数据量下,如果对一个数据集进行数据查找要耗费很多时间的话,最长的时间就是线性时间,一个一个比较过去,这样的效率非常容易造成瓶颈的。所以一个优秀的查找算法肯定是必须的。

二分查找

二分查找的算法思想是非常简单的,比如我们最为著名的猜数游戏,在0到100随机给一个数字,让你猜选中的数字是多少,猜错了只会告诉你是大了还是小了。最简单的方法肯定是从0到100一个一个的猜过去,但是如果有固定的猜数次数的限制呢,你是无法使用这种暴力的猜数方式的,这时候我们的二分查找就大显身手了首先,思路是这样的,选中当前区间的中间值,如果猜错了的话,根据大了还是小了的提示,将中间值转换为区间的边界,然后继续选中当前区间的中间值,由此往复,直到猜中对应的数字为止,最坏的情况,我们只需要7次就可以找到对应的数字了,但是如果使用暴力法的话,最坏的情况需要花费101次的查找。所以这个时间复杂度由此可见差距是非常大的,特别是在大数据量的情况下。但是二分查找有一个局限性就是,我们得针对一个有序的数据集合进行查找的,查找思想类似分治的思想。每次通过跟区间的中间元素对比,将查找区间缩小为之前的一倍的。直到我们找到需要查找的元素。

总结

二分查找查找效率非常的高,在很多算法中都有运用到对应的思想的,