Двоичный поиск против линейного поиска
Линейный поиск, также известный как последовательный поиск, является простейшим алгоритмом поиска. Он ищет указанное значение в списке, проверяя каждый элемент в списке. Двоичный поиск - это также метод, используемый для поиска указанного значения в отсортированном списке. Метод бинарного поиска вдвое уменьшает количество проверяемых элементов (в каждой итерации), сокращая время, затрачиваемое на поиск данного элемента в списке.
Что такое линейный поиск?
Линейный поиск - это простейший метод поиска, который последовательно проверяет каждый элемент в списке, пока не найдет указанный элемент. Входными данными для метода линейного поиска является последовательность (например, массив, коллекция или строка) и элемент, который необходимо найти. Вывод будет истинным, если указанный элемент находится в предоставленной последовательности, или ложным, если он не будет в последовательности. Поскольку этот метод проверяет каждый элемент в списке до тех пор, пока не будет найден указанный элемент, в худшем случае он будет перебирать все элементы в списке, прежде чем найдет требуемый элемент. Сложность линейного поиска равна o(n). Поэтому он считается слишком медленным для использования при поиске элементов в больших списках. Но это очень просто и легче реализовать.
Что такое бинарный поиск?
Двоичный поиск также является методом, используемым для поиска определенного элемента в отсортированном списке. Этот метод начинается со сравнения искомого элемента с элементами в середине списка. Если сравнение определяет, что два элемента равны, метод останавливается и возвращает позицию элемента. Если искомый элемент больше среднего элемента, он снова запускает метод, используя только нижнюю половину отсортированного списка. Если искомый элемент меньше среднего элемента, он снова запускает метод, используя только верхнюю половину отсортированного списка. Если искомый элемент отсутствует в списке, метод вернет уникальное значение, указывающее на это. Поэтому метод бинарного поиска уменьшает вдвое количество сравниваемых элементов (на каждой итерации) в зависимости от результата сравнения. Следовательно, бинарный поиск выполняется за логарифмическое время, что приводит к средней производительности o(log n).
В чем разница между бинарным поиском и линейным поиском?
Несмотря на то, что и линейный поиск, и бинарный поиск являются методами поиска, они имеют несколько отличий. В то время как бинарный поиск работает с отсортированными списками, линейный поиск может работать и с несортированными списками. Сортировка списка обычно имеет среднюю сложность n log n. линейный поиск проще и понятнее, чем бинарный поиск. Но линейный поиск слишком медленный для использования с большими списками из-за его средней производительности o(n). С другой стороны, бинарный поиск считается более эффективным методом, который можно использовать с большими списками. Но реализовать бинарный поиск может быть довольно сложно, и исследование показало, что точный код для бинарного поиска можно найти только в пяти из двадцати книг.