Алгоритмы и структуры данных на Python с примерами кода + видео

Ниже, в каждом отдельном посте, представлены следующие материалы:
Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм)
Алгоритм Бойера-Мура-Хорспула
Алгоритм Дейкстры (Dijkstra’s algorithm)
Алгоритм Флойда (Floyd’s algorithm)
Алгоритм Форда-Фалкерсона
Алгоритм Краскала (Kruskal’s algorithm)
Алгоритм Прима (ближайшего соседа)
Сортировка выбором
Сортировка вставками
Сортировка пузырьком (метод всплывающего пузырька)
Слияние двух упорядоченных списков
Быстрая сортировка слиянием (merge sort)
Быстрая сортировка Хоара
Стек типа LIFO (Last-In-First-Out)
Делаем очередь (queue)

Ниже, в каждом отдельном посте, представлены следующие материалы:
Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм)
Алгоритм Бойера-Мура-Хорспула
Алгоритм Дейкстры (Dijkstra’s algorithm)
Алгоритм Флойда (Floyd’s algorithm)
Алгоритм Форда-Фалкерсона
Алгоритм Краскала (Kruskal’s algorithm)
Алгоритм Прима (ближайшего соседа)
Сортировка выбором
Сортировка вставками
Сортировка пузырьком (метод всплывающего пузырька)
Слияние двух упорядоченных списков
Быстрая сортировка слиянием (merge sort)
Быстрая сортировка Хоара
Стек типа LIFO (Last-In-First-Out)
Делаем очередь (queue)
Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм) | Алгоритмы на Python
Python:
t = "лилила"
p = [0]*len(t)
j = 0
i = 1
while i < len(t):
if t[j] == t[i]:
p[i] = j+1
i += 1
j += 1
else:
if j == 0:
p[i] = 0;
i += 1
else:
j = p[j-1]
print(p)
a = "лилилось лилилась"
m = len(t)
n = len(a)
i = 0
j = 0
while i < n:
if a[i] == t[j]:
i += 1
j += 1
if j == m:
print("образ найден")
break
else:
if j > 0:
j = p[j-1]
else:
i += 1
if i == n and j != m:
print("образ не найден")
Последнее редактирование: