二分查找算法详解
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;
}
以上是关于二分查找算法详解的主要内容,如果未能解决你的问题,请参考以下文章