3

非常に初歩的な質問であることは承知していますが、何も頭に浮かびません。現在、私はこれを試していますが、これは非常に大きな数の場合、最も効率の悪い方法です。誰か助けて。

int count = 66000000;
LinkedList<Integer> list = new LinkedList<Integer>();
        for (int i=1;i<=count;i++){
            list.add(i);
            //System.out.println(i);
        }

編集:

実際には、リスト(キュー)全体に対して繰り返し操作を実行する必要があるため(条件によっては、いくつかの要素を削除して再度追加するなど)、リスト全体を反復する必要が非常に遅くなり、そのような数で10分以上かかりました。

4

3 に答える 3

8

出力のサイズはO(n)であるため、 O(n)時間の複雑さよりも効率的にリストを作成するアルゴリズムを持つことは文字通り不可能です。

実際にリストを生成するのに費やす時間よりも、数字を画面に出力するだけではるかに多くの時間を費やしています。このコードを本当に高速化したい場合は、

System.out.println(i);

別のメモとしてLinkedList、配列 (または配列ベースのリスト) を使用した場合は、より高速になるはずです。

于 2013-06-10T19:16:40.457 に答える
0

あなたの質問はリストを作成することだけではなく、削除と再挿入も含まれます。リストの代わりに HashSet を使用する必要があると思います。

于 2013-06-10T23:11:13.063 に答える