Ошибка в бинарном поиске
Попробовал написать бинарный поиск, всё выводит но в конце ошибка можете помочь и рассказать почему.
Random rnd = new Random();
int n = 10;
int[] masiv = new int[n];
for (int i = 0; i < masiv.length; i++) {
masiv[i] = rnd.nextInt(n);
}
Arrays.sort(masiv);
System.out.println(Arrays.toString(masiv));
Scanner scanner = new Scanner(System.in);
System.out.println("Введите число идекс которого хотите узнать: ");
int search = scanner.nextInt();
int left = 0;
int right = masiv.length - 1;
int inex = -1;
int index = Arrays.binarySearch(masiv, search);
System.out.println("Индекс всего дела == " + index);
do {
int mid = left + (left - right)/2;
if (masiv[mid] < search) {
left = mid + 1;
} else if (masiv[mid] > search) {
right = mid - 1;
} else {
inex = mid;
break;
}
} while (left <= right);
System.out.println(inex);
Ответы (1 шт):
Автор решения: DronDron
→ Ссылка
Такс, ещё поразбирался и вот:
Строку
int mid = left + (left - right) / 2;
надо заменить на
int mid = (right - left) / 2 + left;
т.е. просто right и left поменять местами