前提: 数组是有自然顺序的(从小到大或者从大到小)
//定义方法:从数组中查找一个数,返回其出现的索引,如果没有找到返回-1
public static int binarySearch(int[] arr, int key) {
//1.定义两个索引,一个开始一个结束
int start = 0;
int end = arr.length - 1;
//2.循环
while (start <= end) {
//a.求中间索引
int middle = (start + end) / 2;
//b.数组名[中间索引] 和 要查找的数key 对比
if (arr[middle] == key) {
//i.找到了直接返回 中间索引
return middle;
} else if (arr[middle] > key) {
//ii.如果 要查找的数在middle的左边
end = middle - 1;
} else {
//iii.如果 要查找的数在middle的右边
start = middle + 1;
}
}
//3.如果循环没有找到元素
return -1;
}