public class BinarySearch {
public static int binarySearch(int[] array, int target) {
if (array == null || array.length == 0) {
return -1;
}
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int target = 6;
int result = binarySearch(array, target);
if (result == -1) {
System.out.println("无法找到目标元素");
} else {
System.out.println("目标元素在数组中的索引为:" + result);
}
}
}
当右边界数值接近越界(int) 可能产生 left+right 超出int范围 改进方法可以为
⊙mid =0.5*left+0.5*right
⊙mid=(left+right)>>>1 逻辑右移