Вычислительная сложность алгоритмов сортировки 1 | Page 5

Определение сложности

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

Если одна процедура вызывает другую, то необходимо более тщательно оценить сложность последней. Если в ней выполняется определённое число инструкций (например, вывод на печать), то на оценку сложности это практически не влияет. Если же в вызываемой процедуре выполняется O(N) шагов, то функция может значительно усложнить алгоритм. Если же процедура вызывается внутри цикла, то влияние может быть намного больше.

В качестве примера рассмотрим две процедуры: Slow со сложностью O(N^3) и Fast со сложностью O(N^2).

procedure Slow;

var

i,j,k : integer;

begin

for i :=1 to N do

for j :=1 to N do

for k :=1 to N do

{какое-то действие}

end;

procedure Fast;

var

i,j : integer;

begin

for i :=1 to N do

for j :=1 to N do

Slow;

end ;

procedure Both;

begin

Fast;

end;