Двоичный поиск по массиву примитивов

Есть массив, в котором элементы отсортированы по убыванию

int[] arr = {50, 40, 30, 20, 10};

Нужно найти определенный элемент двоичным поиском.

Что пытался делать

int idx = Arrays.binarySearch(arr, 30, Collections.reverseOrder());

получаю ошибку, что тип int[] не соответствует типу T[].

Если массив объявить как Integer[] arr, то проблем не возникает

Задача учебная, поэтому использование других типов не предлагать.


Ответы (2 шт):

Автор решения: Anton Shchyrov

Нашел такое решение

int idx = Arrays.binarySearch(
  Arrays.stream(arr).boxed().toArray(),
  30,
  Collections.reverseOrder()
);
→ Ссылка
Автор решения: Дмитрий

Если задача учебная, то нужно написать метод, в чем, собственно, вопрос:

private static int binarySearch(int[] a, int key) {
    int low = 0;
    int high = a.length;
    while (low <= high) {
        int mid = (low + high) >>> 1;
        int midVal = a[mid];
        if (midVal > key)low = mid + 1;
        else if (midVal < key) high = mid - 1;
        else return mid;
    }
    return -(low + 1); 
}
→ Ссылка