Написать программу на java в императивной парадигме для бинарного поиска. На вход подаётся целочисленный массив и число. На выходе – индекс элемента или -1, в случае если искомого элемента нет в массиве.
java
public class BinarySearch {
public static int binarySearch(int[] array, int target) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int mid = (low + high) / 2; // находим средний индекс
if (array[mid] == target) { // если элемент найден, возвращаем его индекс
return mid;
} else if (array[mid] < target) { // если элемент меньше искомого, сужаем диапазон поиска в правую часть
low = mid + 1;
} else { // если элемент больше искомого, сужаем диапазон поиска в левую часть
high = mid - 1;
}
}
return -1; // элемент не найден
}
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int target = 6;
int index = binarySearch(array, target);
if (index != -1) {
System.out.println("Элемент найден на позиции " + index);
} else {
System.out.println("Элемент не найден");
}
}
}
Программа состоит из двух методов: `binarySearch` и `main`.
Метод `binarySearch` реализует алгоритм бинарного поиска. Он принимает на вход отсортированный массив `array` и целевое число `target`. Внутри метода создаются две переменные `low` и `high`, которые задают границы текущего диапазона поиска. Затем с помощью цикла `while` выполняется поиск элемента в массиве. На каждой итерации цикла вычисляется средний индекс `mid` с помощью формулы `(low + high) / 2`. Затем элемент `array[mid]` сравнивается с целевым числом `target`. Если они равны, то возвращается индекс элемента `mid`. Если элемент меньше целевого числа, то диапазон поиска сужается с помощью переменной `low = mid + 1`. Если элемент больше целевого числа, то диапазон поиска сужается с помощью переменной `high = mid - 1`. Если цикл завершается, а целевой элемент так и не найден, возвращается `-1`.
Метод `main` содержит вызов `binarySearch` с заданными значениями массива `array` и целевым числом `target`. Если возвращаемое значение `index` не равно `-1`, выводится сообщение о том, что элемент найден на позиции `index`. В противном случае выводится сообщение о том, что элемент не найден. В данном примере массив `array` содержит значения от 1 до 9, и мы ищем элемент со значением 6. В результате выполнения программы будет выведено сообщение "Элемент найден на позиции 5".
Программа работает корректно и находит искомый элемент за время O(log n). Однако перед использованием этой программы необходимо убедиться, что входной массив отсортирован. В противном случае бинарный поиск может дать некорректный результат. Важно помнить, что бинарный поиск применим только к отсортированным массивам.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет