package cn.itcast3;
/*
* 从数组当中找到4所在的索引:
* {2,4,6,7,43,57,90,101}
* 二分法查找:
* 数组必须排序
* 依次将所查找数据与中心数据对比,根据大小调整数据边界。
*
*/
public class Demo3 {
public static void main(String[] args) {
int[] arr = {2,4,6,7,43,57,90,101};
int number = 10;
System.out.println(method(arr, number));
public static int method(int[] arr,int number){
int start = 0; //定义变量,记录最小的索引
int end = arr.length-1; //定义变量,记录最大的索引
int mid = (start+end)/2; //定义变量,记录中间的索引
while(arr[mid]!=number) { //只要查找的数不等于数组中间的数,就继续查找,如果中间的数等于查找的数, 则mid就是要求的索引
if(number<arr[mid]) { //如果这个数比数组中间的数小,则让最大的索引=mid-1
end = mid-1;
}else if(number>arr[mid]) { //如果这个数比数组中间的数大,则让最小的所用=mid+1
start = mid+1;
}
if(start>end) { //如果出现最小索引大于最大索引的情况,说明数组中不存在这样的元素
return -1;
}
mid = (start+end)/2; //每次循环后,因为首尾的索引变化了,所以中间的索引也需要变化
}
return mid; //如果数组中有这个元素,则返回
}
}