0

アルゴリズムの効率を理解するのに苦労しています。その特定の文または部分が 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
}

これらすべてが私に疑問を投げかけました.どのようなコストが何であるかを実際にどのように見つけますか? 私は理解しようとして周りに尋ねてきましたが、これを本当に私に説明できる人は本当にいません. コストを実際にどのように決定するのかを本当に知りたいです。誰でもこれについて私を助けることができますか?

4

2 に答える 2