По определению, алгоритм равен O(N)
, когда число f(N)
элементарных операций, которое ему необходимо выполнить на входе размера N
, удовлетворяет:
f(N) <= C.N ; N >= N0
для некоторой положительной константы C
, независимо от N
, где N0
- некоторый начальный индекс, также не зависящий от N
.
Допустим, вы объединяете три цикла, каждый из которых O(N)
.Согласно определению у вас будет три пары констант (C1, N1)
, (C2, N2)
и (C3, N3)
, такие что
loop1(N) <= C1.N ; N >= N1
loop2(N) <= C2.N ; N >= N2
loop3(N) <= C3.N ; N >= N3
Тогда,
loop1(N) + loop2(N) + loop3(N) <= (C1 + C2 + C3)N ; N >= max(N1,N2,N3)
и определение O(N)
сохраняется для константы C = C1+C2+C3
и начального индекса N0 = max(N1,N2,N3)
.Следовательно, конкатенация постоянного числа алгоритмов O(N)
снова равна O(N)
, потому что константы C
и N0
не зависят от N
.