Это сообщение в блоге является продолжением серии сообщений об алгоритмах, поскольку мне как программисту было сложно понять эту концепцию. Почитайте первое сообщение в блоге об алгоритмах, где я представляю, что такое алгоритмы, и пример алгоритма, и второе сообщение в блоге о структурах данных, где я объяснил, что такое структуры данных и какие типы структур данных. Также ознакомьтесь с третьим сообщением в блоге о сложности времени и сложности пространства, в котором я даю объяснение сложности времени и пространства. Я также написал в блоге сообщение о Big O Notation. Недавно я написал в блоге сообщения о двоичном поиске и линейном поиске.

В этом сообщении в блоге я сосредоточусь на поиске с интерполяцией. Я объясню, что такое поиск с интерполяцией, как поиск с интерполяцией связан с алгоритмами, попытаюсь шаг за шагом разбить концепцию поиска с интерполяцией и сравнить с двоичным поиском. Я хотел потратить немного времени на изучение алгоритмов поиска, прежде чем перейти к алгоритмам сортировки.

Что такое поиск с интерполяцией?

Поиск с интерполяцией - это тип поискового алгоритма. Поиск с интерполяцией является улучшением по сравнению с двоичным поиском для сценариев, в которых значения в отсортированном массиве равномерно распределены.

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

Поиск с интерполяцией: шаги, как это работает:

Вот подход к поиску с интерполяцией:

  1. В цикле вычислите значение «pos», используя формулу положения датчика (которая показана выше).
  2. Если есть совпадение, верните индекс элемента и выйдите.
  3. Если элемент меньше, чем arr [pos], вычислить положение датчика левого подмассива. В противном случае вычислите то же самое в правом подмассиве.
  4. Повторяйте, пока не будет найдено совпадение или пока подмассив не уменьшится до нуля.

Поиск с интерполяцией: пример

Вот пример написания алгоритма поиска с интерполяцией на основе шагов, которые я предоставил ранее. Ниже я написал функцию, которая принимает следующие параметры: массив и значение, которое я хочу найти. Функция возвращает индекс найденного значения.

А как насчет временной сложности? Если элементы распределены равномерно, то O (log log n)). В худшем случае это может занять до O (n). Поэтому для эффективной работы интерполяционного поиска элементы / данные массива должны быть отсортированы и равномерно распределены.

Общий поиск с интерполяцией - важная концепция, которую нужно понимать, когда дело касается алгоритмов. Также важно сравнить его с другими алгоритмами, такими как двоичный поиск. Спасибо, что прочитали этот пост в блоге. Теперь, когда я рассмотрел алгоритмы поиска, я рассмотрю алгоритмы сортировки в следующих публикациях в блоге.