Algorithm 给定C函数θ(nlogn)或θ(n^2logn)的时间复杂度?

Algorithm 给定C函数θ(nlogn)或θ(n^2logn)的时间复杂度?,algorithm,time-complexity,asymptotic-complexity,Algorithm,Time Complexity,Asymptotic Complexity,我已经计算了下面的C函数的时间复杂度,现在是theta(nlogn)。你能告诉我我是否错了吗,给出的答案是theta(n^2logn)?我刚刚开始阅读这些概念 int unk(int n) { int i,j,k=0; for(i=n/2;i<=n;i++) for(j=2;j<=n;j=j*2) k=k+(n/2); return k; } int unk(int n) { int i,j,k=0; 对于(i=n/2;i我认为你的答案是正确的

我已经计算了下面的C函数的时间复杂度,现在是
theta(nlogn)
。你能告诉我我是否错了吗,给出的答案是
theta(n^2logn)
?我刚刚开始阅读这些概念

int unk(int n)
{
  int i,j,k=0;
  for(i=n/2;i<=n;i++)
     for(j=2;j<=n;j=j*2)
        k=k+(n/2);
  return k;
}
int unk(int n)
{
int i,j,k=0;

对于(i=n/2;i我认为你的答案是正确的,它确实是θ(nlogn)。然而,你的分析似乎有些错误

外部循环执行O(n/2)次

内部循环在外部循环的每次迭代中执行O(logn)次


通过将二者相乘并去掉常数,得出的结果是:
O(n)*O(logn)=O(nlogn)
我认为你的答案是正确的,它确实是θ(nlogn)。然而,你的分析似乎有点错误

外部循环执行O(n/2)次

内部循环在外部循环的每次迭代中执行O(logn)次


将二者相乘并删除常数,得到
O(n)*O(logn)=O(nlogn)

伦理问题可能更适合。你能告诉我们这本书的名字吗?我已经总结了我获得的两个循环和声明的时间。我没有得到n^2术语。我从某个网站得到这个问题(我不记得名字)答案是n^2logn。理论道德问题可能更适合。你能告诉我们这本书的名字吗?我已经总结了我获得的两个循环和声明的时间。我没有得到n^2术语。我从某个网站上得到了这个问题(我不记得名字)答案是n^2logn。是的,外循环执行(n/2)+1+1次(最后1次是在循环终止前执行)。因此,内循环的每个(lgn+1)次执行(n/2+1)次外循环。因此,循环内的语句执行(n/2+1)lgn次。求和(n/2+2)+(n/2+1)(lgn+1)+(n/2+1)lgn给出了θ(nlgn),我能说什么呢,这不是计算复杂度的方式。你不能这样加起来。是的,外循环执行(n/2)+1+1次(最后1次是在循环终止前执行)。因此,内循环的(lgn+1)次中的每一次都执行(n/2+1)外循环的次数。因此,循环内的语句执行(n/2+1)lgn次。求和(n/2+2)+(n/2+1)(lgn+1)+(n/2+1)lgn给出θ(nlgn)。我可以说,这不是计算复杂性的方式。你不能这样相加。