二分查找算法详解

Posted 代码编织新世界

tags:

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

通俗的讲二分查找又叫折半查找,要查找的前提是检索结果位于已排序的列表中。


概念

在一个已排序的数组a中,使用二分查找key,假如这个数组的范围是[lo...hi],我们要的key就在这个范围里。查找的方法是拿lo到hi的正中间的值,我们假设是a[mid],来跟key相比,如果a[mid]>key,说明我们要查找的key在数组a的前半部,否则就在后半部。无论是在前半部还是后半部,将那部分再次折半查找,重复这个过程,直到查找到key值所在的地方。
下面是实现二分查找的Java代码:

public static int indexOf(int[] a, int key) {
int lo = 0;
   int hi = a.length - 1;
   while (lo <= hi) {
// key 不在数组 a[lo..hi]中或者key 不存在.
       int mid = lo + (hi - lo) / 2;
       if      (key < a[mid]) hi = mid - 1;
       else if (key > a[mid]) lo = mid + 1;
       else return mid;
   }
return -1;
}


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

详解二分查找算法

二分查找(折半查找)算法详解(C语言实现)

二分查找算法详解

算法知识常用算法详解丨二分查找法(折半查找)

二分查找详解

二分查找算法详解:快速查找的同时还最大程度的节省内存