Əməliyyatları saymaq alqoritmin mürəkkəbliyini kodu işə salmadan təyin etməyin əsas üsuludur. Burada saniyələr yox, giriş ölçüsü n böyüdükcə əsas əməliyyatların sayının necə artdığı vacibdir. Bir neçə sadə qaydanı bilsəniz, əksər funksiyaların Big-O qiymətini bir neçə saniyəyə tapa bilərsiniz.

Əsas qayda: sabit qiymətləri atın

Təyinat, müqayisə, hesab əməliyyatı, indeksə görə müraciət O(1) sayılır. Sabit vuruğu və aşağı tərtibli hədləri atırıq: 3n + 7 yazılışı O(n), n^2/2 + 5n isə O(n^2) olur.

Üç sayma qaydası: ardıcıl bloklar toplanır, iç-içə dövrlər vurulur, asılı sərhədlər üçbucaq verir
Üç sayma qaydası: ardıcıl bloklar toplanır, iç-içə dövrlər vurulur, asılı sərhədlər üçbucaq verir

Qayda 1: ardıcıl bloklar toplanır

Bir-birinin ardınca gələn hissələrin qiymətləri toplanır, nəticədə ən böyüyü qalır. n addımlıq dövrdən sonra n * n addımlıq dövr gəlirsə, cəmi n + n^2 olur və bu O(n^2) deməkdir.

python
def steps_sequential(n):
    ops = 0
    for _ in range(n):
        ops += 1
    for _ in range(n):
        for _ in range(n):
            ops += 1
    return ops

for n in (10, 100, 1000):
    print(n, steps_sequential(n))