Java 10 не может найти правильное значение с бинарным поиском [duplicate]

Если метод equals() присутствует в классе java.lang.Object, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор == проверяет, что фактические экземпляры объекта одинаковы или нет.

Пример

Рассмотрим две различные ссылочные переменные, str1 и str2:

str1 = new String("abc");
str2 = new String("abc");

Если вы используете equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

, вы получите выход как TRUE, если вы используете ==.

System.out.println((str1==str2) ? "TRUE" : "FALSE");

Теперь вы получите вывод FALSE в качестве вывода, потому что оба str1 и str2 указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String() каждый новый объект создается каждый раз.

4
задан aurelius 3 October 2017 в 11:12
поделиться

2 ответа

Двоичный поиск работает, предполагая, что середина массива содержит медианное значение в массиве. Если это не отсортировано, это предположение не имеет смысла, так как медиана может быть где угодно и разрезание массива пополам может означать, что вы отрезали номер, который вы искали.

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

8
ответ дан Lawrence Aiello 17 August 2018 в 10:07
поделиться
  • 1
    Вопрос не в том, почему массив должен быть отсортирован, но почему метод binarySearch не выполняет сортировку. – Jesper 16 December 2014 в 20:06
  • 2
    Если бы он понял, как работает бинарный поиск, он будет знать ответ на этот вопрос. Вот почему я объяснил это. – Lawrence Aiello 16 December 2014 в 20:07

Обычно считается хорошей практикой программирования для определения функций, которые фокусируются на одной цели. Это приводит к более модульному, многоразовому коду и позволяет избежать повторной обработки кода.

Например, было бы целесообразно реализовать функцию, которая выполняет сортировку для вас, и которую вы можете просто вызвать в разных функциях поиска. Таким образом, вам не нужно повторять код сортировки в каждой функции поиска, которую вы хотите реализовать.

2
ответ дан Shreeraj 17 August 2018 в 10:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: