Автор оригинала: Pankaj Kumar.
Линейный поиск в Python – практический подход
Давайте узнаем о простом и простой алгоритме поиска в Python.
Алгоритм линейного поиска
Линейный поиск работает очень похожи на то, как мы ищем в случайном списке предметов, указанных нам.
Позвольте нам сказать, что нам нужно найти слово на данной странице, мы начнем сверху и просматриваем каждое слово один за другим, пока мы не найдем слово, которое мы ищем.
Подобно этому, линейный поиск начинается с первого элемента, а затем проверяет каждый элемент в списке, пока элемент не будет найден, либо список не будет исчерпан.
Давайте возьмем пример:
Теоретический пример алгоритма линейного поиска
Рассматривать,
- Список: 19, 2000, 8, 2, 99, 24, 17, 15, 88, 40
- Цель: 99.
Итак, нам нужно найти 99 в данном списке. Начнем с первого элемента, а затем пройти каждый элемент в списке.
- Пункт 1: 19, не найден.
- Пункт 2: 2000, не найден.
- Пункт 3: 8, не найден.
- Пункт 4: 2, не найден.
- Пункт 5, 99, цель найдена, концевая петля.
Итак, мы нашли данную цель после пяти проверок в положении 5.
Если данная цель не была в списке, то мы прошли бы весь список и не нашли товар, а после окончания списка мы бы объявили бы товар, который не найден.
Обратите внимание, что мы смотрим на каждый элемент в списке линейным способом, поэтому алгоритм назван так.
Примечание об эффективности
Линейный поиск не очень эффективный алгоритм, он просматривает каждый элемент в списке, поэтому алгоритм непосредственно зависит от количества элементов в списке.
В других условиях алгоритм имеет временную сложность O (n). Это означает, что если количество элементов в списке умножено на сумму, то время, необходимое для завершения алгоритма, будет умножена на эту же сумму.
Есть лучшие алгоритмы поиска, такие как Sentinel, двоичный или фибоначчи, но линейный поиск – это самый простой и самый фундаментальный из них, что означает, что каждый программист должен знать, как его использовать.
Реализация алгоритма линейного поиска в Python
def linear_search(lst, target): for i in range(len(lst)): if(lst[i] == target): return i return -1
Давайте посмотрим на код,
- Мы создаем функцию для линейного поиска, который принимает два аргумента. Первый аргумент – это список, содержащий элементы, а второй аргумент – это целевой элемент, который должен быть найден.
- Тогда мы создаем петлю с счетчиком
Я
,Я
проведет все индексы данного списка, то естьЯ
будет идти от 0 до длины списка – 1. - В каждой итерации мы сравниваем цель на элемент списка по индексу
Я
Отказ - Если они одинаковы, то это означает, что мы нашли цель в списке в этом индексе, поэтому мы просто возвращаем этот индекс и закончим петлю, а также функцию.
- Если весь список проверяется, и элементы не возвращаются, то элемент управления выйдет из списка, и теперь мы уверены, что целевой элемент не находится в списке, поэтому мы возвращаем –1 как способ сказать, что товар не был найден.
Давайте посмотрим, как будет вести алгоритм для элемента в списке, а другой предмет, который не находится в списке:
Выход
Здесь мы отправляем два предмета в качестве цели: 99, которая находится в списке на индексе 4, а 12, что не в списке.
Как видно, алгоритм вернул индекс 4 на 99 и -1 для 12. Что указывает на то, что 99 находится на индексе 4, а 12 отсутствует из списка, и, следовательно, алгоритм работает.
Заключение
В этом руководстве мы изучали очень простой и простой алгоритм поиска, называемый линейным поиском.
Мы обсудили, как работает линейный поиск, мы говорили о своей эффективности и почему он называется «линейным».
Затем мы посмотрели, как алгоритм написан в Python, что он делает, и подтвердил, что, глядя на выход кода. Я надеюсь, что вы узнали что-то и увидимся в другом руководстве.