Код использует замкнутый диапазон [left, right]. Укажи ошибочную строку, из-за которой диапазон может перестать уменьшаться.
static int binarySearch(int[] values, int target) {
int left = 0;
int right = values.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (values[mid] == target) return mid;
if (values[mid] < target) {
left = mid;
} else {
right = mid - 1;
}
}
return -1;
}