Əvvəlki mövzuda vaxtı ölçməyi öyrəndik. Lakin saniyələr maşından asılıdır. Bu mövzuda alqoritmləri maşından asılı olmayan şəkildə müqayisə etməyi öyrənirik.

Saniyələrin problemi

Ölçülmüş vaxt prosessordan, Python versiyasından, yükdən və keşdən asılıdır. Eyni kod noutbukda 2 saniyə, serverdə 0,5 saniyə çəkə bilər. Alqoritm isə eynidir. Bizə elementar əməliyyatların sayı lazımdır: giriş ölçüsü n-in funksiyası kimi.

Xətti və kvadratik alqoritmlərin əməliyyat sayı
Xətti və kvadratik alqoritmlərin əməliyyat sayı

Model

  • Giriş ölçüsü n: siyahının uzunluğu, sətirdəki simvol sayı, qrafın təpə və kənarlarının sayı.
  • Elementar əməliyyat: mənimsətmə, müqayisə, ədədi əməl, indekslə müraciət; hər biri bir addımdır.
  • f(n): alqoritmin addım sayı. Bizi onun böyümə xarakteri maraqlandırır.

İç-içə dövrlərdə addımlar vurulur:

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