使用二分查找的前提:该数组是一个有序的数组。
二分查找的思路:
将需要查找的数与数组中中间的数比较,如果该数比中间数大证明要查找的数可能在该数的右边(有一个从小到大的数组),然后又比较右边中间的数,以此类推,直到找到(返回下标)或者比到最后一个都没有找到。
实现代码:
/**
* 二分查找
*/
public class DichotomySearch {
public static void main(String[] args) {
int[] i = {1,2,3,4,5,6,7,8,9};
int index = search(i, 2);
if (index!=-1){
System.out.println(index);
}else {
System.out.println("没有该值!");
}
}
//返回int 下标
public static int search(int[] arr,int target){
if (arr!=null&&arr.length>0){
int left = 0;
int right = arr.length-1;
int mid;
//判断条件
while (left<=right){
//每次进入循环初始化mid
mid = (left+right)/2;
//值在左边 右边的指针移动 反之左边的指针移动
if (target<arr[mid]){
right = mid - 1;
}else if (target>arr[mid]){
left = mid + 1;
}else {
return mid;
}
}
}
//没有该值 返回-1
return -1;
}
}