0

次の方法でBig Oが何であるかを理解しようとしています。

    for(Integer i : list){
        if(list.contains(-i))
            //doSomething
    }

contains メソッドが O(n) であり、そのような for ループも O(n) であることを知っています。このメソッドの合計は O(n * n) になりますか?

4

3 に答える 3

1

がO(n)であると仮定するとList.contains、そうです、アルゴリズム全体はO(n ^ 2)です。

于 2012-10-08T22:38:06.753 に答える
0

したがって、m と n が 2 つのリストであると仮定すると、合計実行時間は n+1m+2m+...+(n-n+1)m になります。

于 2013-10-13T07:37:22.773 に答える
0

しかし、リストで反復子を使用し、hasNext メソッドを使用すると、最悪の場合の合計実行時間は O(n) になります。近似式は、定数に n を加えたものになります。ここで、n は if 条件です。forループとは異なり、反復子はオブジェクトを返すのに一定の時間がかかります。

于 2013-10-13T07:30:41.130 に答える