Kao što je spomenuto u odgovoru na povezano pitanje, uobičajen način da algoritam ima vremensku složenost O(log n) je da taj algoritam radi više puta smanjivanjem veličine ulaza nekim konstantnim faktorom na svakoj iteraciji.
Šta znači log n?
O(log N) u osnovi znači vrijeme raste linearno dok n raste eksponencijalno. Dakle, ako je potrebna 1 sekunda da se izračuna 10 elemenata, biće potrebno 2 sekunde da se izračuna 100 elemenata, 3 sekunde da se izračuna 1000 elemenata, itd. To je O(log n) kada radimo tipove algoritama podijeli pa vladaj, npr. binarno pretraživanje.
Šta je O i log n?
Za unos veličine n, algoritam od O(n) će izvesti korake proporcionalne n, dok će drugi algoritam od O(log(n)) izvesti korake otprilike log(n). Jasno je da je log(n) manji od n, stoga je algoritam složenosti O(log(n)) bolji.
Kako izračunati log n?
Ideja je da je algoritam O(log n) ako umjesto skrolovanja kroz strukturu 1 po 1, podijelite strukturu na pola iznova i iznova i uradite konstantan broj operacija za svaku podjelu. Algoritmi pretraživanja kod kojih se prostor za odgovore stalno dijeli su O(log n).
Šta je log n Square?
Log ^2 (
) znači da je proporcionalan log log za problem veličine
. Log(
)^ 2 znači da jeproporcionalno kvadratu log.