Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 确定算法的复杂度_Algorithm_Time_While Loop_Complexity Theory - Fatal编程技术网

Algorithm 确定算法的复杂度

Algorithm 确定算法的复杂度,algorithm,time,while-loop,complexity-theory,Algorithm,Time,While Loop,Complexity Theory,假设algo(p)是一个需要θ(p)时间来执行且不改变p的算法。确定以下算法的运行时间复杂性: Algo2(n) begin p=1; while p <= n begin algo(p) p=2*p end; end; Algo2(n) 开始 p=1; p要得到一个更容易的问题,可以如下设置: Algo(n) begin p=1, i=1 while p<= n begin algo(p) p=2*p

假设algo(p)是一个需要θ(p)时间来执行且不改变p的算法。确定以下算法的运行时间复杂性:

Algo2(n) 
begin
p=1;
while p <= n 
    begin 
    algo(p)
    p=2*p
    end;
end;
Algo2(n)
开始
p=1;

p要得到一个更容易的问题,可以如下设置:

Algo(n)
  begin
  p=1, i=1
  while p<= n
    begin
    algo(p)
    p=2*p
    i++
    end
  end
Algo(n)
开始
p=1,i=1
而p是大θ(n):

它调用
algo(p)
O(logn)次,p=1,2,4,…,2^(floor(logn))。
这是θ(1+2+…+2^(floor(logn))=θ(2^(floor(logn+1)-1)=θ(n)。

这是不正确的。循环执行了O(logn)次,但整个算法的复杂性,包括对
算法的调用,是θ(n)我看错了他的帖子。我会更正我的答案,谢谢你指出。地板到底是什么意思?你是如何从p=p得到log(n)的*2@TwilightSparkleTheGeek阅读Henrik给出的答案,他解释了为什么这个问题的答案是θ(n)。
Algo(n)
  begin
  i=1
  while 2^(i-1)<=n
    begin
    algo(2^(i-1))
    i++
    end
  end