这是我关于数据结构的第一门课程,我们都在谈论每个讲座/ TA讲座O(log(n))。这可能是一个愚蠢的问题,但是如果有人可以向我确切解释这是什么意思,我将不胜感激!
O(log(n))
这意味着所讨论的事物(通常是运行时间)的缩放比例与其输入大小的对数一致。
Big-O表示法并不意味着 确切的 方程式,而是一个 界限 。例如,以下函数的输出均为O(n):
f(x) = 3x g(x) = 0.5x m(x) = x + 5
因为当你增加X,它们的输出都增加而线性- 如果有一个6:1之间的比例f(n)和g(n),也将有大约6:1的比例之间f(10*n)和g(10*n)等。
f(n)
g(n)
f(10*n)
g(10*n)
至于是否O(n)还是O(log n)比较好,可以考虑:如果n = 1000,那么log n = 3(日志基-10)。您宁愿算法运行1000秒还是3秒?
O(n)
O(log n)
n = 1000
log n = 3