这个算法的运行时间是log n吗?
Is the running time of this algorithm log n?
我认为这个算法(或代码)运行了 log n 次,因为每次要评估的条件数量都会减少一个常数因子。我对么?如果不是,你能给我解释一下 运行 时间是多少吗?
g(x) (* x > 1 is a real number *)
while x > 1 do
x := x/3
让这个循环运行k次,这将是算法的时间复杂度,
结束时:
第一次迭代:x= (x/31)
第二次迭代:x= (x/32)
第 3 次迭代:x= (x/33)
.
.
.
.
第 k 次迭代:x=(x/3k) <=1(即终止条件)
解决这个问题:采用边界条件:
(x/3k) =1
因此 k=Log3x
因此时间复杂度为 O(LogN).
希望这有帮助。
我认为这个算法(或代码)运行了 log n 次,因为每次要评估的条件数量都会减少一个常数因子。我对么?如果不是,你能给我解释一下 运行 时间是多少吗?
g(x) (* x > 1 is a real number *)
while x > 1 do
x := x/3
让这个循环运行k次,这将是算法的时间复杂度,
结束时:
第一次迭代:x= (x/31)
第二次迭代:x= (x/32)
第 3 次迭代:x= (x/33)
.
.
.
.
第 k 次迭代:x=(x/3k) <=1(即终止条件)
解决这个问题:采用边界条件:
(x/3k) =1
因此 k=Log3x
因此时间复杂度为 O(LogN).
希望这有帮助。