Введение в алгоритм линейного поиска: введение и функции [с примерами]

Опубликовано: 2021-06-22

Оглавление

Что такое поиск?

Поиск — это процесс нахождения заданного элемента в списке элементов. Это помогает в поиске конкретной записи. Следовательно, это метод определения места данного предмета. Успех процесса поиска зависит от того, был ли идентифицирован элемент, подлежащий поиску, или нет.

Структура данных позволяет осуществлять поиск данных двумя способами.

  1. Линейный поиск или последовательный поиск
  2. Бинарный поиск

Линейный поиск

Алгоритмы линейного поиска — это тип алгоритма последовательного поиска данных. Этот алгоритм находит заданный элемент со сложностью O(n). Он применяется к коллекции элементов. Каждый элемент данных ищется последовательно и возвращается, если он соответствует искомому элементу. Если совпадений не найдено, поиск продолжается до конца собранных данных. По сути, это метод изучения каждого элемента при обходе списка. Алгоритм поиска может применяться как к отсортированным, так и к несортированным данным. Практически линейный поиск редко используется из-за более быстрых вариантов поиска, предоставляемых другими алгоритмами поиска, такими как алгоритмы бинарного поиска и хеш-таблицы.

Шаги алгоритма линейного поиска

  • Чтение элемента поиска пользователем.
  • Элемент для поиска сжимается с первым элементом списка.
  • Если элементы совпадают, то генерируется возврат.
  • Если элементы не совпадают, искомый элемент сравнивается со вторым элементом списка.
  • Процесс повторяется до тех пор, пока элемент не будет сопоставлен.

Особенности алгоритмов линейного поиска

  1. Обычно он применяется к небольшому списку несортированных или неупорядоченных данных.
  2. Время линейно зависит от количества элементов, поэтому имеет временную сложность, если O (n).
  3. Реализация очень проста.

Алгоритмы линейного поиска

Метод непрерывного цикла продолжается до тех пор, пока элемент не будет найден.

  • алгоритм Seqnl_Search(список, элемент)
  • Предварительно: список != ;
  • Сообщение: вернуть индекс элемента, если он найден, иначе: 1
  • индекс <- фи
  • while index < list.Cnt и list[index] != item //cnt: переменная-счетчик
  • индекс <- индекс + 1
  • конец, пока
  • если индекс < list.Cnt и список [индекс] = элемент
  • возвращаемый индекс
  • конец, если
  • возврат: 1
  • конец Seqnl_Search

Пример линейного поиска

Задача: задан массив arr[] из n элементов. Напишите функцию для поиска заданного элемента x в массиве arr[].

Рис. 1. Пример кода, показывающий реализацию алгоритма линейного поиска.

Источник

Алгоритмы линейного поиска могут использоваться на нескольких языках программирования.

  1. Линейный поиск в Python

Рис. 2. Пример кода, показывающего алгоритм линейного поиска на языке Python.

Источник

Вывод: элемент присутствует в индексе 3

  1. Линейный поиск в C

Рисунок 3: Пример кода, показывающего алгоритм линейного поиска на языке C

Источник

Вывод : элемент присутствует в индексе 3

  1. Линейный поиск в структуре данных

Псевдокод для задачи линейного поиска в структуре данных

Рисунок 4: Псевдокод для алгоритма линейного поиска

Источник

Бинарный поиск

Двоичный поиск — это алгоритм поиска элементов в массиве элементов. По сравнению с алгоритмом линейного поиска алгоритм бинарного поиска применяется к отсортированному списку данных.

Алгоритм бинарного поиска включает в себя следующие шаги

  • Сравнение искомого элемента с элементом из середины списка или массива.
  • Если элемент совпадает с элементом из списка, он возвращает индекс среднего элемента.
  • Если совпадение не возвращается, проверяется, больше или меньше элемент, чем элемент в середине.
  • Для элемента большего значения, чем средний элемент, поиск выполняется в правой части массива.
  • Точно так же, если элемент меньше по значению, чем средний элемент, поиск продолжается в левой части списка.

Поэтому бинарный поиск лучше всего применять, когда данные содержат большое количество отсортированных стержневых элементов. Это делает обязательным условием для алгоритма поиска, что список/массив должен быть отсортирован.

Особенности бинарного поиска

  • Алгоритм бинарного поиска полезен для поиска большого количества элементов в массиве.
  • Алгоритм бинарного поиска имеет временную сложность O(logn).
  • Реализация алгоритма бинарного поиска проста.

Алгоритм бинарного поиска

  • Алгоритм Binary_Search(список, элемент)
  • Установите L на 0 и R на n: 1
  • если L > R, то Binary_Search завершается как неудачный
  • еще
  • Установите m (положение в среднем элементе) на пол (L + R) / 2
  • если Am < T, установите L равным m + 1 и перейдите к шагу 3.
  • если Am > T, установите R равным m: 1 и перейдите к шагу 3.
  • Теперь Ам = Т,
  • поиск выполнен; возвращение (м)

Заключение

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

Если вы заинтересованы в науке о данных, вы должны ознакомиться с программой Executive PG IIIT-B и upGrad по науке о данных, которая была тщательно разработана для работающих профессионалов и предлагает многочисленные тематические исследования, практические семинары, индивидуальное наставничество и гораздо более.

Чем линейный поиск отличается от бинарного поиска?

Ниже показаны основные различия между линейным поиском и бинарным поиском:
Линейный поиск -
1. Для линейного поиска элементы не должны располагаться в определенном порядке.
2. При линейном поиске доступ к элементам осуществляется последовательно.
3. O(n), где n — количество элементов массива.
4. Линейный поиск предпочтительнее, когда набор данных относительно меньше.
Бинарный поиск -
1. Элементы должны быть отсортированы для бинарного поиска.
2. Доступ к элементам осуществляется случайным образом в бинарном поиске.
3. O(log n), где n — количество элементов массива.
4. Бинарный поиск обычно предпочтительнее для больших наборов данных.

Каковы приложения линейного поиска?

Ниже приведены некоторые важные приложения линейного поиска:
Линейный поиск эффективен для поиска в наборах данных с меньшим количеством элементов. Если необходимо выполнить только один поиск в неупорядоченных данных, то линейный поиск предпочтительнее других алгоритмов поиска.
Поиск узла в связанном списке становится эффективным, когда выполняется линейный поиск. Кроме того, бинарный поиск и линейный поиск имеют одинаковые временные сложности в связанных списках. Двоичный поиск может даже усложниться для выполнения операций поиска в связанных списках.
Если элементы в наборе данных неоднократно изменяются, то в таких случаях предпочтительным выбором является линейный поиск.

Приведите примеры, где линейный поиск можно увидеть в реальной жизни?

Алгоритм линейного поиска аналогичен реальному поиску. Есть несколько примеров, подтверждающих это:
Поиск книги в стопке из 100 книг. Вы будете линейно сканировать название каждой книги, пока не найдете нужную.
Поиск такси на стоянке. Когда вы заказываете поездку на такси, у вас есть номерной знак такси. Чтобы найти свое такси, очевидным методом было бы сопоставить номерной знак каждого автомобиля с вашим номером.
Нахождение любимого печенья на полках магазинов. Из огромной коллекции файлов cookie в магазине вы будете искать каждую строку одну за другой.