-
在一个有序数组中找到一个数的索引
代码如下:
public class MyArrayTest {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3,4,5};
int f=MyArrayTest.binarySearch(4,arr);
if (f!=-1)
System.out.println(f);
else
System.out.println("不存在");
}
public static int binarySearch(int value,int arr[]) {
int min=0 ;
int mid ;
int max = arr.length;
while (true) {
mid = (min + max) / 2;
if (mid < arr.length && arr[mid] == value) {
return mid;//找到后返回索引值
}
else if (min > max) {//如果min > max了,说明已经把整个数组找完了,没找到目标数字
return -1;
} else {
if (mid < arr.length && arr[mid] > value) {
max = mid - 1;//目标数字小,则从中间的往左边找
} else {
min = mid + 1;//目标数字大,则从中间的往右边找
}
}
}
}
}