public static int binarySearch(int[] arr, int key) {
//默认的范围是整个数组
int begin = 0;//范围的开始
int end = arr.length-1;//范围的结束
int m; //范围的中心点
while(begin <= end) {
m = (begin + end) / 2;//找到当前范围的中心。
if(arr[m] == key) {//让key与中心点元素进行比较,如果相等,说明找到了。
return m;//返回m.
}
if(key > arr[m]) {//当key比大于中心点元素
begin = m + 1;//开始位置从中心点+1
} else {
end = m - 1;//当key比中心点元素小,那么结束位置就是中间点-1
}
}
return -1;
}
/*
*把参数在数组中的下标位置返回
*/
public static int indexOf(int[] arr, int key) {
// 遍历所有的元素
for(int i = 0; i < arr.length; i++) {
//当每个元素与key比较,如果相等,把当前元素的下标返回
if(arr[i] == key) {
return i;
}
}
//当循环结束,还没有返回。
//说明没有找到,那么返回-1,因为没有下标为负数,表示没有找到。
return -1;
}