Я не знаю, является ли функциональность моего кода правильной для двоичного поиска. Но это не мой вопрос, я хочу решить его сам.Общий двоичный поиск - JAVA -
Моя проблема заключается в проверке его функциональности в то время как я получаю следующие ошибки:
Я действительно не знаю, как решить эту проблему. Пожалуйста, помогите мне!
Мой код:
public class BinarySearchGeneric<T extends Comparable<T>>{
public int search(T[] array, T element){
int start = 0;
int end = array.length - 1;
int mid = (start + end)/2;
while(!element.equals(array[mid]) && end != 0) {
if (element.equals(array[mid])) {
return mid;
} else if (array[mid].compareTo(element) < 0) {
end = mid - 1;
mid = (start + end)/2;
} else if(array[mid].compareTo(element) > 0){
start = mid + 1;
mid = (start + end)/2;
}
}
return -1;
}
}
Основной метод:
public class Main {
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9,10};
BinarySearchGeneric binarySearchGeneric = new BinarySearchGeneric(a);
System.out.println("BinarySearch Generic: " + binarySearchGeneric.search(a, 8));
}
}
Не вопрос, но рассмотрим, что generics и массивы не являются дружественными bedfellows.Посмотрите на 'List', а не на 'T []'. –
У вас не может быть дженериков с примитивными типами. Используйте 'Integer []' вместо 'int []' . –
Также: не используйте необработанные типы: 'BinarySearchGeneric '. –