public
class BinarySearch {
static void main() {
binarySearch(new int[] {34, 52, 85, 26, 75, 24, 68}, 75) ;
}
static int binarySearch(int[] arr, int target) {
int left = 0, right = arr.length - 1;
arr =
Arrays.stream(arr).sorted().toArray();
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
while (left <= right) {
int mid = left + (right - left) / 2; // Avoid overflow
System.out.println("left=" + left + " mid=" + mid + " right=" + right + "
midValue=" + arr[mid]); // DEBUG
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
System.out.println("Not found!
Target: " + target); // DEBUG
return -1;
}
}
24 26 34 52 68 75 85
left=0 mid=3 right=6 midValue=52
left=4 mid=5 right=6 midValue=75
24 26 34 52 68 75 85
left=0 mid=3 right=6 midValue=52
left=0 mid=1 right=2 midValue=26
left=2 mid=2 right=2 midValue=34