Časovna zahtevnost

Pri naših poskusih s tabelami dolžine n = 100, 200, ..., 500 elementov smo dobili naslednje čase izvajanja:

Vidimo torej, da je funkcija NajdiVsoto2 sicer res hitrejša od prvotne rešitve NajdiVsoto, vendar čas izvajanja pri obeh narašča približno enako hitro v odvisnosti od velikosti vhodnih podatkov (torej od n); funkcija NajdiVsoto se v vsakem primeru izvaja približno dvakrat tako dolgo kot funkcija NajdiVsoto2.

Veliko opaznejša pa je razlika med tema dvema funkcijama in našo zadnjo rešitvijo, NajdiVsoto3. Na prvi pogled se mogoče celo zdi, da pri slednji čas izvajanja sploh ni odvisen od n. Če jo pogledamo od blizu, vidimo, da to sicer ni res in da tudi pri tej funkciji čas narašča z n, vendar veliko počasneje kot pri prvih dveh:


Čas izvajanja pri funkciji NajdiVsoto3 narašča približno premosorazmerno z n, pri funkcijah NajdiVsoto in NajdiVsoto2 pa narašča veliko hitreje od n – tam pravzaprav narašča približno premosorazmerno z n2. Matematično bi rekli, da je čas izvajanja pri NajdiVsoto3 linearna funkcija n, pri NajdiVsoto in NajdiVsoto2 pa kvadratna funkcija n. (Ti funkciji na primer za n = 500 porabita 25-krat toliko časa kot za n = 100. Za obdelavo 5-krat večjega primerka problema sta torej porabili 52 = 25-krat več časa. Pri funkciji NajdiVsoto3 pa za 5-krat večji problem porabimo le 5-krat več časa.)

Pri prvih dveh funkcijah smo videli, da ne glede na to, kako velik n gledamo, se NajdiVsoto izvaja približno dvakrat tako dolgo kot NajdiVsoto2. Ko pa primerjamo čas izvajanja teh dveh funkcij s funkcijo NajdiVsoto3, vidimo, da to razmerje narašča prek vseh meja (premosorazmerno z n-jem). Pri n = 100 se je NajdiVsoto izvajala 17-krat tako dolgo kot NajdiVsoto3, pri n = 500 pa že 82-krat tako dolgo: