在我准备算法考试的过程中,我试图解决以下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)
答案 0 :(得分:0)
在最后一种情况下,j<=i+7
为j<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的情况之一,猜猜我没看到那个。