public class ArrayUtil {
public static void main(String[] args) {
//这是int类型数组的对象
int[] arr = {9, 8, 10, 7, 6, 87, 11};
//找出arr这个数组中87所在下标
//调用方法
int index = binarySearch(arr, 87);
System.out.println(index == -1 ? "该元素不存在" : "该元素的下标" + index);
}
/**
* 从数组中查找目标元素的下标
* @param arr被查找的s数组(已经排序的)
* @param dest目标元素
* @return -1不存在,其他表示返回的是元素的下标
*/
private static int binarySearch(int[] arr, int dest) {
//开始下标
int begin=0;
//结束下标
int end = arr.length - 1;
//开始元素的下标只要在结束元素下标的左边,就有机会继续循环
while (begin <= end) {
//中间元素下标
int mid = (begin + end) / 2;
if (arr[mid] == dest) {
return mid;
} else if (arr[mid] < dest) {
//目标在“中间的”右边
//开始元素下标需要发生变化,(开始元素的下标需要重新赋值)
begin = mid + 1;//一直增
} else {
//arr[mid]>dest
//目标在“中间”左边
//修改结束元素的下标
end = mid - 1;
}
}
return -1;
}
}
结果
该元素的下标5