Algorithm 嵌套for循环的运行时间

Algorithm 嵌套for循环的运行时间,algorithm,analysis,Algorithm,Analysis,1a.)循环在下面,我想找到它的运行时间。这是循环 sum = 0 for (int i =0; i < N; i++){ for(int j = i; j >= 0; j--) sum ++ sum=0 对于(int i=0;i=0;j--) 总数++ 第一个for循环在O(n)中运行,这很容易,但是对于第二个for循环,我认为它也在O(n)时间中运行,因为无论何时j=I,这个循环都会运行I次 所以我写下了它的运行时间为O(n^2) 1b.)此外,有

1a.)循环在下面,我想找到它的运行时间。这是循环

sum = 0
for (int i =0; i < N; i++){
    for(int j = i; j >= 0; j--)
          sum ++
sum=0
对于(int i=0;i=0;j--)
总数++
第一个for循环在O(n)中运行,这很容易,但是对于第二个for循环,我认为它也在O(n)时间中运行,因为无论何时
j=I
,这个循环都会运行I次

所以我写下了它的运行时间为O(n^2)


1b.)此外,有人能解释一下,当一个问题要求一个“θ界”时是什么意思吗?

好的,在这里计算循环迭代的确切次数非常简单。你得到1+2+3+4+5+6+7+…+N

这等于N(N+1)/2,所以是的,算法复杂度是O(N2)


我不能说我已经跨过了θ的界限……虽然《圣经》提到了它,所以这可能是一个合理的起点。

f(n)=O(g(n))
当且仅当对于足够大的
n
存在一个常数
c
,使得
f(n)θ界意味着它是一个严格的渐近界,从上到下限制运行时间。在您的示例中,N^2是运行时间的上下限,因此它是运行时间的θ界

更正式地说:

存在k1和k2,因此:


N^2*k1家庭作业问题!阅读你的教科书。你的大O定义不清楚。它看起来好像常数
c
可以依赖于
N
。应该是“…如果存在
N
c
,那么对于所有
N
。”@克里斯·霍普曼-如果它是一个常数,我认为很明显它不能依赖于
n
,这是一个变量。我试着让它尽可能简单。因此,“找到θ界”问题的答案是0.5(n^2)=<(n^2)=<2(n^2)?对于n大于或等于零?@user373466-不,这个问题的答案是
theta(n^2)
。这就是你得到答案的方式。因此,内循环的迭代次数也是外循环的迭代次数,对吗?@user373466:不,外循环只执行了n次……但它没有做任何额外的工作。