Курсовая работа: Порівняльний аналіз ефективності та складності алгоритмів пошуку елементів у масивах

S : array[1..8] of 0..9;

i,j : longint;

n,m : longint;

v,w : longint; {v - число, що характеризує шуканий рядок, w характеризує рядок довжини m в тексті}

k : longint;

const D : longint = 10; {кількість різних символів (10 цифр 0,1,2,..9)}

Begin

{Ввід тексту і зразка}

v:=0;

w:=0;

for i:=1 to m do

begin

v:=v*D+S[i]; { обчислення v, рядок подається як число}

w:=w*D+T[i]; { обчислення початкового значення w}

end;

k:=1;

for i:=1 to m-1 do {k потрібне для багаторазового обрахунку w і має значення Dm-1}

k:=k*D;

for i:=m+1 to n+1 do

begin

if w=v then { якщо числа рівні, то рядки співпадають, а значить, зразок знайдений в тексті}

writeln(' Зразок входить в текст із ',i-m,' -ого символу');

if i<=n then

w:=d*(w-k*T[i-m])+T[i]; { обчислення нового значення w}

end;

End.

За цим алгоритмом виконується лінійний прохід по рядку (m кроків) і лінійний прохід по всьому тексту (n кроків), отже загальний час роботи рівний O(n+m) .

Час роботи алгоритму лінійно залежить від розміру рядка і тексту, тобто програма працює досить швидко. Проте, виникає питання в доцільності алгоритму для роботи лише із короткими рядками і цифрами. Розробники алгоритму придумали, як покращити свій же алгоритм без особливих втрат в швидкості роботи.

К-во Просмотров: 455
Бесплатно скачать Курсовая работа: Порівняльний аналіз ефективності та складності алгоритмів пошуку елементів у масивах