二分查找法(二分搜索法)

Posted 万方技术

tags:

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

        今天我们来介绍一下二分查找法,二分查找法是一种效率较高的查找方法,但是它有一个前提,就是待搜索的数据必须是有序的,否则将无法使用二分查找法。

        二分查找法的原理就是一组数据中最中间位置的数据与关键字比较,如果相同,则查找成功,如果不相同,则将数据分为前后两个部分,如果关键字大于中间值,去后面查找,反之,去前面查找。

        举个例子,比如我们现在有一个数组,数组中有10个元素,分别是1到10,现在我们需要查找7是否在这个数组中,如果我们从第一个元素遍历数组,那么我们需要执行7次循环才能查找成功,现在我们来看二分查找需要多少次循环。

        首先我们先来比较关键字和数组中间位置的元素,中间位置的计算方式是[数组最左边的下标+上数组最右边的下标]/2,因为当前位置比关键字小,所以我们在6到10之间进行查找。

        同理,我们8比关键字7要大,所以我们要到6到7之间查找,6和7的下标分别为5和6,所以中间位置是下标为5的位置,关键字大于中间位置,所以继续查找7和7,因为7和7的下标都是6,所以中间位置肯定也是7本身,和关键字相同,查找成功。

        我们使用二分查找法在同样的数组中查找相同的元素,时间上明显要比从头查找快很多,因为我们例子中使用的是数组长度为10的数据,所以可能不是特别明显,有兴趣的同学可以自己去构造一个一百万或者一千万的数据来测试一下这个算法。


以上是关于二分查找法(二分搜索法)的主要内容,如果未能解决你的问题,请参考以下文章

二叉树搜索(二分查找法)

LeetCode Binary Search Summary 二分搜索法小结

面试官,我会写二分查找法!对,没有 bug 的那种!

利用二分查找法来解一道列表排序题

二分查找法

简单实用算法——二分查找法(BinarySearch)