二分法查找---原理
如何从数组里找一个元素的位置?如果排列是无序的,我们只能从头到尾找,但如果排列是有序的,我们则可以用别的更好的方法,二分查找法就类似我们在英汉词典里找一个单词的方法。如下图所示(假如我们要查找的数字是“88”):
二分法查找---代码演示
/**
* 使用二分法查找数组中的数据
* @param array 目标数组
* @param value 需要查找的值
* @return 返回查找结果(未找到返回-1)
*/
public static int binary(int [] array , int value){
int low = 0;
int high = array.length-1;
while(low <= high){
int middle = (low + high) / 2;
if(value == array[middle]){
return middle;
}
if(value > array[middle]){
low = middle + 1;
}
if(value <array[middle]){
high = middle - 1;
}
}
return -1;
}
public static void main(String[] args) {
int [] a = {1,2,3,4,5,7,8,9};
int n = binary(a, 9);
if(n == -1) {
System.out.println("未找到目标数据");
}else {
System.out.println("找到该数据下标位置:" + n);
}
}