说一下二分查找
Posted 小IT大金融
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说一下二分查找相关的知识,希望对你有一定的参考价值。
二分查找作为最经典的查找算法,在面试过程中经常被问到,但是从面试官的角度来看,能把二分查找写的很标准并没有错误的面试者寥寥无几。
今天就来简单回顾下二分查找
二分查找的前提是数据有序(假设升序),查找的基本思想,其实可以见名知意,就是把数据二分,判断待查找数据和分组后的之间数据是否一致,如果是,则直接返回中间数据;如果查找数据比中间数据大,说明查找数据在右半边,则需要更新下次查找区间为右半部分,反之,更新下次查找区间为左半部分。
画个图简单说明:
有了图,代码就很容易理解了。
public class BinarySearch {
public static int search(int[] array, int value) {
if(array == null || array.length == 0) return -1;
int low = 0, high = array.length - 1; //high必须是length - 1
while (low <= high) { //必须要有等于
int mid = (low + high) >>> 1;
if (value == array[mid]) return mid;
if (value > array[mid]) low = mid + 1;
else high = mid - 1;
}
return -1;
}
public static void main(String[] args) {
String input = "0, 0, 1, 3, 5";
String[] array = input.trim().split(",");
int[] data = new int[array.length];
for (int i=0; i<data.length; i++) {
data[i] = Integer.parseInt(array[i].trim());
}
int index = search(data, 5);
System.out.println(index);
}
}
以上是关于说一下二分查找的主要内容,如果未能解决你的问题,请参考以下文章