确定大哦符号

时间:2015-11-29 09:48:38

标签: algorithm big-o asymptotic-complexity

在我准备算法考试的过程中,我试图解决以下Big-Oh问题,所以你能为我检查一下吗

for(j=1; j<n; j++){
 System.out.print(j*2);
 }
for(k=n;k>=1; k=k/2) {
System.out.print(k);
}

答案:O(lg 3 n)

for(i=1; i<n; i++){
 i=i+5;
 for(j=m; j>=0; j--){
  System.out.print(i*j);
  } }

答案:O(n)

for(i=1; i<n; i++){ 
for(j=i; j<=i+7; j++){
 System.out.print(i*j);
 } }

答案:O(mn)

{{1}}

答案:其实这个很难,但我认为是O(n ^ 2)

2 个答案:

答案 0 :(得分:0)

在最后一种情况下,j<=i+7j<i+8,因此您拥有O(8*N)(其中N是您的n),即{{1} (O-notation不知道const值)。

答案 1 :(得分:0)

你的答案是正确的,通常如果你有嵌套for循环你的运行时总是O(n ^ 2)。

另外,如果它是单个for循环,它将完全取决于大小的O(n),但是,如果在第二个for循环中,如果你将它运行到变量m次,你的符号将是O (m)因为m> n,并且因为所有常量都被删除,所以你会选择更大的选项。

编辑:您展示了嵌套不会为n ^ 2的情况之一,猜猜我没看到那个。