Что именно означает O (log n)?



в настоящее время я изучаю время работы Big O Notation и амортизированное время. Я понимаю понятие O (n) линейное время, что означает, что размер входного сигнала влияет на рост алгоритма пропорционально...и то же самое касается, например, квадратичного времени O (n2) etc..даже алгоритмы, такие как генераторы перестановок, с O (n!) раз, которые растут на факториалы.



например, следующая функция это O (n) потому что алгоритм растет пропорционально его входу n:



f(int n) {
int i;
for (i = 0; i < n; ++i)
printf("%d", i);
}


аналогично, если бы был вложенный цикл, время было бы O (n2).



но что же такое O (log n)? Например, что значит сказать, что высота полного двоичного дерева O (log n)?



Я знаю (может быть, не очень подробно), Что такое логарифм, в том смысле, что: log10 100 = 2, но я не могу понять, как идентифицировать функцию с логарифмическим временем.

690   0  

Comments

    Ничего не найдено.