Бинарный поиск в 2D -массиве с использованием пользовательского компаратораJAVA

Программисты JAVA общаются здесь
Anonymous
Бинарный поиск в 2D -массиве с использованием пользовательского компаратора

Сообщение Anonymous »

У меня есть 2D целочисленного массива [n] [3] < /code> и целевое значение.
Я сортирую массив с помощью < /p>

Код: Выделить всё

Arrays.sort(arr, (a,b)->Integer.compare(a[1],b[1]));
Как я могу использовать Arrays.binarysearch и пользовательский компаратор для поиска ARM вдоль индекса 1 для целевого значения? Что -то, что может заменить следующее: < /p>

Код: Выделить всё

   int binSearch(int[][] arr, int target) {
int low=0, high=arr.length-1;
while( low < high ) {
int mid=(low+high)/2;
if( arr[mid][1] == target ) {
return i;
}
else if( arr[mid][1] < target {
low=mid+1;
}
else {
high=mid-1;
}
}
return -(low+1);
}
edit: arrays.sort работает, как мне это нужно - мой первоначальный массив, например {{1,3,5}, {7,1,6 }, {4,2,1}} сортирует со средним значением до {{7,1,6}, {4,2,1}, {1,3,5}}
Я думал, что могу написать аналогичное выражение для массивов. BinarySearch, где каждый элемент (1x3) массива сравнивается с целым целым числом. Что -то вроде: < /p>

Код: Выделить всё

int idx = Arrays.binarySearch(arr, target, (a,b)->Integer.compare(a[1],b));
Я не могу действительно использовать тот же компаратор, что и в таком роде, потому что они разные типы - массив поиска представляет собой массив элементов размером 1x3 , а моя цель - единственный целое число. Мне нужно сделать бинарный поиск.

Подробнее здесь: https://stackoverflow.com/questions/718 ... comparator

Вернуться в «JAVA»