java 数组折半查找
public static void main (String[] args) {
// 数组折半查找
int[] arr = {1,2,3,4,5,6,7};
int index = binarySearch(arr,2);
System.out.println(index);
}
// 数组折半查找
public static int binarySearch(int[] arr,int key) {
// 数组折半查找原理
// PS 前提:被查找的数组中的元素必须是有序排列的
// 定义三个指针变量
int min = 0;
int max = arr.length - 1;
int mid = 0;
// 循环折半,条件 min <= max
while (min <= max) {
// 工时,计算中间索引
min = (min + max)/2;
// 让被找元素和中间索引元素进行比较
if (key > arr[mid]) {
// 移动最小索引位置
min = mid + 1;
}
else if (key < arr[mid]) {
// 移动最大索引位置
max = mid - 1;
}
else {
// 找到了
return mid;
}
}
// 返回未找到
return -1;
}