Как работает бинарный поиск в неотсортированном массиве?

Как найти число в неотсортированном массиве и почему бинарный поиск может оказаться полезным в данной ситуации? На примере задачи по поиску в массиве на сайте LeetCode можно увидеть работу метода.
  • 29 апреля 2024 г. 22:30
Ответы на вопрос 2
Бинарный поиск предполагает, что массив отсортирован по возрастанию или убыванию, иначе алгоритм не будет работать корректно. Однако, если массив неотсортирован, бинарный поиск не применим. 

Для поиска числа в неотсортированном массиве лучше использовать линейный поиск, который просто перебирает все элементы массива, сравнивая их с искомым числом.

Бинарный поиск может быть полезен в ситуации, когда массив отсортирован, так как его сложность O(log n) позволяет быстро находить элементы. 

Пример задачи на сайте LeetCode, где бинарный поиск применен для поиска элемента в отсортированном массиве: "Search in Rotated Sorted Array". В данной задаче массив был отсортирован в возрастающем порядке, а затем повернут на неизвестное число шагов. Бинарный поиск позволяет эффективно найти элемент в таком массиве.
Ну ведь тут массив же отсортирован. Хоть и с приколом: он сдвинут. Можно тем же бинарным поиском найти, где там "разрыв" происходит, а после у вас 2 отсортированных куска. Или сразу модифицировать бинпоиск. 
Представьте, что у вас массив, где сначала идут 1, а потом 0. Можете найти в нем, где 1 переходит в 0?

Или смотрите так: ищите вы x. Взяли значение a[m]. Можете, посмотрев на a[l], a[m], a[r] и x понять, в какой половине лежит x?
Похожие вопросы