Недавно начал изучать Java и во время реализации «бинарного поиска» обнаружил, что если я вызову Arrays.sort () для массива, в котором я собираюсь искать, то цикл станет бесконечным. Удаление / комментирование строки решает проблему, но я не могу понять, почему. Я хочу передать отсортированный массив методу .binarySearch (). Пытался разобраться с отладчиком, но не смог. Не хотите оставить этот вопрос без ответа, может кто-нибудь, пожалуйста, помочь?
import java.util.Arrays;
public class Main {
static class BinarySearch {
int binarySearch(int[] array, int value) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int mid = low + high / 2;
int guess = array[mid];
if (guess == value) {
return mid;
} else if (guess > value) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
}
public static void main(String[] args) {
BinarySearch bs = new BinarySearch();
int[] a = {1, 3, 4, 45, 54, 666, 2, 4};
Arrays.sort(a);
int result = bs.binarySearch(a, 45);
if (result == -1) {
System.out.println("value not found");
} else {
System.out.println("value found at position: " + result);
}
}
}