/
NikolayIvkin
/
TheAlgorithms
Обзор
Документация
Войти
/
NikolayIvkin
/
TheAlgorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/thealgorithms/searches/IterativeBinarySearch.java
55 строк
2 KB
Hardik Pawar
Add tests, remove `main` in `IterativeBinarySearch` (#5667)
10 окт 2024, 22:41
Не верифицирован
10 окт 2024, 22:41
0a7065d
Код
Авторство
О чём код?
package com.thealgorithms.searches; import com.thealgorithms.devutils.searches.SearchAlgorithm; /** * Binary search is one of the most popular algorithms This class represents * iterative version {@link BinarySearch} Iterative binary search is likely to * have lower constant factors because it doesn't involve the overhead of * manipulating the call stack. But in java the recursive version can be * optimized by the compiler to this version. * * <p> * Worst-case performance O(log n) Best-case performance O(1) Average * performance O(log n) Worst-case space complexity O(1) * * @author Gabriele La Greca : https://github.com/thegabriele97 * @author Podshivalov Nikita (https://github.com/nikitap492) * @see SearchAlgorithm * @see BinarySearch */ public final class IterativeBinarySearch implements SearchAlgorithm { /** * This method implements an iterative version of binary search algorithm * * @param array a sorted array * @param key the key to search in array * @return the index of key in the array or -1 if not found */ @Override public <T extends Comparable<T>> int find(T[] array, T key) { int l; int r; int k; int cmp; l = 0; r = array.length - 1; while (l <= r) { k = (l + r) >>> 1; cmp = key.compareTo(array[k]); if (cmp == 0) { return k; } else if (cmp < 0) { r = --k; } else { l = ++k; } } return -1; } }