#java
#java
Вопрос:
Мне нужно проверить значение null в массиве, когда я использую двоичный поиск.
У меня есть этот код:
public String search(int search) {
int first = 0;
int last = vector.length - 1;
int center;
while (first <= last) {
center = (first last) / 2;
if (search == vector[center].getValue() {
return "Found: " vector[center].getIdentificationValue() "n";
} else if (search < vector[center].getValue) {
first = center - 1;
} else {
last = center 1;
}
}
return "Not Found";
}
Проверка, которую я должен сделать, это:
- У меня есть вектор
[1,2,3,4,null,null,null]
, и - Я выполняю поиск по 4, когда двоичный поиск достигает
null
, начинаю снова со значения в pos [0].
Комментарии:
1. было бы полезно, если бы вы могли рассказать нам, что
vector
такое.2. вектор равен [1,2,3,4,null, null, null]
3. это просто вектор для тестирования
4. Ваша заявленная проверка непонятна. Кажется, что это просто цикл навсегда, как вы его описываете. Попробуйте объяснить это еще раз так, чтобы это было понятно людям, которые не знают, что, по вашему мнению, вы пытаетесь сделать.
Ответ №1:
Массив вообще не должен содержать null
. Из вашего примера кажется, что null
s встречается только в конце массива. Если вы знаете, сколько элементов массива являются «хорошими», просто выполните двоичный поиск в диапазоне (0, firstNullIndex)
.