アルゴリズムの効率を理解するのに苦労しています。その特定の文または部分が lg n、O (N)、または log base 2 (n) であることを実際にどのように判断しますか?
ここに 2 つの例があります。
doIt() は O(n)=n^2 と表現できます。
最初の例。
i=1
loop (i<n)
doIt(…)
i=i × 2
end loop
上記の費用は以下の通りです。
i=1 ... 1
loop (i<n) ... lg n
doIt(…) ... n^2 lg n
i=i × 2 ... lg n
end loop
2 番目の例:
static int myMethod(int n){
int i = 1;
for(int i = 1; i <= n; i = i * 2)
doIt();
return 1;
}
上記の費用は以下の通りです。
static int myMethod(int n){ ... 1
int i = 1; ... 1
for(int i = 1; i <= n; i = i * 2) ... log base 2 (n)
doIt(); ... log base 2 (n) * n^2
return 1; ... 1
}
これらすべてが私に疑問を投げかけました.どのようなコストが何であるかを実際にどのように見つけますか? 私は理解しようとして周りに尋ねてきましたが、これを本当に私に説明できる人は本当にいません. コストを実際にどのように決定するのかを本当に知りたいです。誰でもこれについて私を助けることができますか?