Пример программы бинарного (двоичного) поиска на Java

Пример программы бинарного (двоичного) поиска на Java

Продолжаю наполнять раздел для начинающих Java программистов полезными статьями. На этот раз мы рассмотрим пример программы бинарного (двоичного) поиска на Java. Известно, что в Java есть стандартный класс java.util.Arrays, в котором уже реализованы разные вариации бинарного поиска binarySearch(), но в этой статье мы напишем свою реализацию этого алгоритма на Java.

Кратко о бинарном поиске

Бинарный или двоичный поиск является одним из классических алгоритмов поиска элементов в отсортированном списке или массиве чисел. Поиск происходит путем деления элементов массива на половины.

Ниже представлена программа, реализующая алгоритм двоичного поиска. Размер и элементы массива будут вводиться пользователем.

Результат выполнения программы бинарного (двоичного) поиска на Java:

Результат неудачного выполнения бинарного поиска:

Вот такая простая программа для демонстрации работы двоичного поиска на Java. Следите за обновлениями раздела Начало работы и читайте еще больше статей по Java для начинающих.

3 thoughts to “Пример программы бинарного (двоичного) поиска на Java”

  1. Я начинающий программист — вопрос следующего характера, не ругайте, если что не так. Кажется в коде, что то упущено, что то вроде Arrays.sort либо иной реализации сортировки.
    Перед бинарным поиском разве массив не должен быть сначала упорядочен?
    Код выглядит нерабочим, результат успешности поиска случаен, зависит от того как пользователь ввел данные. Допустим для последовательности i…j,k, где i…j числа по возрастанию, а k<i, при поиске k результат будет всегда неудачен при длине массива более 4.
    И судя по пункту Результат выполнения программы бинарного (двоичного) поиска на Java: в вашем уроке
    результат 16 был успешно найден, но на позиции 4, хотя он введен 2м, массив все же скорее всего был упорядочен по убыванию, что не отражено в коде(к тому же код примера на приведенных входных данных не работает).

    1. Вы совершенно правы, я упустил этот момент. Обновил статью с пояснениями и вынес бинарный поиск в отдельный метод. Спасибо за комментарий, Вы помогли развитию сайта.

  2. Решение получилось внешне не только рабочим, но на мой взгляд и более изящным(операции сравнения в данном варианте лучше реализованы). Вот только в Output «16 является 4 элементом в массиве», оно будет при данной сортировке(по возрастанию) 2м, а 4 м оно будет при сортировке по убыванию — Arrays.sort(array, Collections.reverseOrder()). Но тогда придется сначала в массиве примитивы int «обернуть» в класс Integer.

Добавить комментарий для Илья Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *