В своей второй статье на Medium я хочу рассказать о бинарном поиске и о том, как этот алгоритм работает на TypeScript. Я опубликовал свой фрагмент кода на Github.

Что такое бинарный поиск?

Двоичный поиск, также известный как логарифмический поиск, представляет собой алгоритм поиска, который находит положение целевого значения в структуре данных (например, в массиве). Для этого структура данных должна быть отсортирована. Невозможно использовать алгоритм бинарного поиска в несортированной структуре данных.

Временная сложность

Худший случай: O(log n)
Средний случай: O(log n)
Лучший случай: O(1)

Функция TypeScript

Как видите, сам метод не так уж и сложен. Но позвольте мне объяснить, что произойдет, на примере.

Эта функция binarySearch принимает два аргумента: массив целых чисел и целое число.

числа: [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
цель: 2

Это означает, что мы хотим найти индекс того массива (NUMS), в котором элемент содержит целое число 2 (TARGET).

При линейном поиске мы перебираем этот массив, скорее всего, начиная с индекса 0, пока не найдем нужный элемент. При бинарном поиске мы многократно делим интервал поиска пополам. Для этого мы следуем этому потоку:

  1. Сравните TARGET со средним элементом.
  2. Если TARGET совпадает со средним элементом, мы возвращаем средний индекс.
  3. В противном случае, если TARGET больше среднего элемента, то TARGET может лежать только в правой половине подмассива после среднего элемента. Итак, мы повторяемся для правой половины.
  4. В противном случае (ЦЕЛЬ меньше) повторяется для левой половины.

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

Спасибо, что прочитали мою вторую статью на Medium. Надеюсь, я смог освежить ваши знания.

В очередной раз выложил свой код на Github.

Ваше здоровье!

Надеюсь, вам понравилось это читать. Если вы хотите поддержать меня как писателя, рассмотрите возможность подписки стать участником Medium. Всего 5 долларов в месяц, и вы получаете неограниченный доступ к Medium.

Хотите поддержать меня? Купи мне кофе.

Читать дальше





Создавайте компонуемые веб-приложения

Не создавайте веб-монолиты. Используйте Bit для создания и компоновки несвязанных программных компонентов — в ваших любимых фреймворках, таких как React или Node. Создавайте масштабируемые и модульные приложения с мощными и приятными возможностями разработки.

Перенесите свою команду в Bit Cloud, чтобы совместно размещать и совместно работать над компонентами, а также значительно ускорить, масштабировать и стандартизировать разработку в команде. Начните с компонуемых интерфейсов, таких как Design System или Micro Frontends, или исследуйте компонуемый сервер. Попробуйте →

Узнать больше