Ошибка в бинарном поиске

Попробовал написать бинарный поиск, всё выводит но в конце ошибка можете помочь и рассказать почему.

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 поменять местами

→ Ссылка