English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map-сборник

Java Set-сборник

Java Ввод/вывод (I/O)

Java Reader/Writer

Другие темы Java

Java программа для реализации алгоритма двоичного поиска

Java полные примеры

В этом примере мы изучим реализацию алгоритма двоичного поиска в Java.

Прежде чем изучать реализацию двоичного поиска в Java, убедитесь, что вы понимаете принцип работы алгоритма двоичного поиска.

Пример: Java-программа для реализации алгоритма двоичного поиска

import java.util.Scanner;
//Двоичный поиск в Java
class Main {
  int binarySearch(int array[], int element, int low, int high) {
    //Повторять этот процесс, пока указатель high не станет равен указателю low
    while (low <= high) {
      //Получение индекса mid элемента
      int mid = low + (high - low) / 2;
      //Если элемент равен mid элементу
      if (array[mid] == element)
        возврат mid;
      //Если элемент меньше mid элемента
      //Только поиск слева от mid
      if (array[mid] < element)
        low = mid + 1;
      //Если элемент больше mid элемента
      //Только поиск справа от mid
      else
        high = mid - 1;
    }
    возврат -1;
  }
  public static void main(String args[]) {
    //Создание объекта класса Main
    Main obj = new Main();
    //Создание отсортированного массива
    int[] array = {3, 4, 5, 6, 7, 8, 9};
    int n = array.length;
    //Получение ввода от пользователя, элемент для поиска
    Scanner input = new Scanner(System.in);
    System.out.println("Введите элемент для поиска:");
    //Элемент для поиска
    int element = input.nextInt();
    input.close();
    //Вызов метода двоичного поиска
    //Передача параметров: массив, элемент, индекс первого и последнего элементов
    int result = obj.binarySearch(array, element, 0, n - 1);
    if (result == -1)
      System.out.println("Не найдено");
    else
      System.out.println("Найден элемент, в индексе" + result);
  }
}

Вывод 1

Введите элемент для поиска:
6
Найден элемент, в индексе

Здесь мы уже использовалиКласс сканера JavaПолучаем ввод от пользователя. В зависимости от ввода пользователя, мы используем двоичный поиск для проверки наличия элемента в массиве.

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

  int binarySearch(int array[], int element, int low, int high) {
    if (high >= low) {
      int mid = low + (high - low) / 2;
      //проверка, является ли элемент mid искомым
      if (array[mid] == element)
        возврат mid;
      //поиск левой половины mid
      if (array[mid] > element)
        возврат binarySearch(array, element, low, mid - 1);
      //поиск правой половины mid
      возврат binarySearch(array, element, mid + 1, high);
    }
    возврат -1;
  }

В данном случае,该方法 binarySearch() будет вызываться до тех пор, пока не будет найден элемент или если условие if не сработает.

Java полные примеры