Скачиваний:
0
Добавлен:
02.11.2025
Размер:
88.69 Кб
Скачать

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

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

Пример работы

Прямой поиск осуществляется путем сравнения каждого символа подстроки с символами строки. Если символы не совпадают, то происходит сдвиг и поиск продолжается со следующего символа в строке. Вычисление для подстроки ABCABD и строки ABCABCAABCABD. Алфавит – ABCD.

Подстрока: АВСАВD

 

Текст для поиска:

ABCABCAABCABD

 

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

Процесс поиска:

Шаг 1

ABCABCAABCABD

 

Шаг 2

АВСАВD

 

Шаг 3

АВСАВD

 

Шаг 4

АВСАВD

 

Шаг 5

АВСАВD

 

Шаг 6

АВСАВD

 

Шаг 7

АВСАВD

 

Шаг 8

АВСАВD

 

Шаг 9

АВСАВD

 

Шаг 10

АВСАВD

 

Шаг 11

АВСАВD

 

Шаг 12

АВСАВD

 

Шаг 13

АВСАВD

 

Шаг 14

АВСАВD

 

Шаг 15

АВСАВD

 

Шаг 16

АВСАВD

 

Шаг 17

АВСАВD

 

Шаг 18

АВСАВD

 

Шаг 19

АВСАВD

 

Шаг 20

АВСАВD

 

 

Шаг 21

АВСАВD

Таблица 2. Метод прямого поиска

На первом шаге происходит сравнение первых шести символов строки и подстроки: это ABCABD и ABCABC. Совпадает первый символ.

Со второго шага начинается посимвольное сравнение строки и подстроки. Если найдено совпадение, то позиция не сдвигается, а сравнивается следующий символ подстроки со строкой, и так до тех пор, пока не будет обнаружено полное совпадение или его отсутствие. В нашем случае на втором шаге фиксируется совпадение первого символа подстроки «А», на третьем шаге — второго символа «B», на четвёртом шаге — символа «С», на пятом шаге — символа «А», на шестом шаге — символа «В».

На седьмом шаге происходит сдвиг на одну позицию, так как шестой символ строки не совпал с последним символом подстроки. На этом шаге сравнивается ABCABD и BCABCA. Совпадения нет.

На восьмом шаге происходит сдвиг на одну позицию, так как в текущей позиции совпадений нет. На этом шаге сравнивается ABCABD и CABCAA.

На девятом шаге происходит сравнение четвёртого символа строки и первого символа подстроки. Найдено совпадение символа «А». В нашем случае на десятом шаге фиксируется совпадение второго символа «B», на одиннадцатом шаге — символа «С», на двенадцатом шаге — символа «А». Совпадение закончилось, происходит сдвиг.

На тринадцатом шаге происходит сдвиг, так как совпадений нет. На этом шаге происходит сравнение ABCABD и BCAABC.

На четырнадцатом шаге сравнивается ABCABD и CAABCA. Совпадение не найдено, происходит сдвиг.

На пятнадцатом шаге сравнивается ABCABD и AABCAB. Совпадение не найдено, происходит сдвиг.

На шестнадцатом шаге сравнивается ABCABD и ABCABD. Фиксируется совпадение первого символа. На семнадцатом шаге фиксируется совпадение второго символа «B», на восемнадцатом шаге — символа «С», на девятнадцатом шаге — символа «А», на двадцатом — символа «B», на двадцать первом — символа «D». Найдено полное совпадение.