log(sqrt(n))=(1/2)log(n)
如果进行渐近分析,我们不会考虑常数项 那么,O(log(sqrt(n)))和O(log(n))一样好吗?
根据我的理解,如果我们增加n的大小,log(n)与log(n)相比会慢慢增长。但我无法理解前方(1/2)移动力的故障? 只是这个因素1/2只会降低速度吗?
考虑我们将log(n * n)表示为2log(n)和log(n)?
的情况答案 0 :(得分:7)
渐近是一样的:
O(log(sqrt(n))) = O(log(n^1/2)) = O(1/2 log(n)) = O(log(n))
答案 1 :(得分:4)
你是对的,O(log(sqrt(n)))与你的问题中给出的推理与O(log(n))相同。
答案 2 :(得分:3)
Time(A) = log n
Time(B) = log sqrt(n) = log n^(1/2) = 1/2 log n
渐近相同的
O(Time(A)) = O(log n)
O(Time(B)) = O(1/2 log n) = O(log n)
O(Time(A)) = O(Time(B))
微不足道
Time(A) = 1 * log n
Time(B) = 1/2 * log n
Time(A) > Time(B)
Time(A) = 2 * Time(B)
<强>结论强>
log n = 2 log sqrt(n)
虽然log n
和log sqrt(n)
之间的差异微不足道,但log n
总是花费时间的两倍log sqrt(n)
<强>视觉强>
答案 3 :(得分:1)
大O符号忽略任何常数乘数。
O(500000.N)
为O(N)
且为O(0.00001.N)
。
出于同样的原因,O(Log(Sqrt(N)))
O(1/2.Log(N))
是O(Log(N))
,而N
就是{{1}}。
大O表示法不是关于程序的速度,而是{{1}}增加时运行时间的增长。