二分法查找
算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的。
基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前值则在数列的后半段中继续查找,直到找到为止。
代码示例
class Demo{
public static void main(String[] args){
int[] arr = new int[]{1,2,3,4,5,7,11,45,78};
int keyNum = 11;//目标数字
int targetNumIndex = binarySearch(arr,keyNum);
System.out.println(targetNumIdex);
}
public static int binarySearch(int[] arr,int keyNum){
int start = 0;//开始游标
int end = arr.length - 1;//结束游标
while(start<=end){
int middleIndex = (start + end)/2;
if(keyNum>arr[middleIndex]){
start = middleIndex+1;
}else if(keyNum<arr[middleIndex]){
end = middleIndex-1;
}else if(keyNum<arr[middleIndex]){
return middleIndex;
}
}
return -1
}
}
```![二分查找图解.png](http://upload-images.jianshu.io/upload_images/5472165-9e3eb52e8e5d6cba.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)