public class Code04_BSExist {
public static void main(String[] args) {
int[] arr = {1, 2, 4, 6, 10, 20, 21, 33, 43, 54};
System.out.println(exist(arr, 55));
}
public static boolean exist(int[] arr, int num) {
if (arr == null || arr.length == 0) {
return false;
}
int l = 0;
int r = arr.length - 1;
int mid = 0;
while (l < r) {
mid = l + ((r - l) >> 1);
if (arr[mid] == num) {
return true;
} else if (arr[mid] > num) {
r = mid - 1;
} else {
l = mid + 1;
}
}
return arr[l] == num;
}
}
知识扩展:
2*n 可以表示为 n<<1
2*n + 1 可以表示为 (n<<1) | 1
在一个有序数组中,找>=某个数最左侧的位置