2017-01-13 5 views
-1

競合プログラミングのほとんどの場合、コードを使用する前に複雑さを知る必要があります。 C++で異なるライブラリ関数とSTLを使用しています。複雑さのあるSTLの美しい文書があります。Javaで異なるコレクションの時間複雑度

javaで複雑な組み込みのCollectionsメソッド(複雑なjava.util.Arrays.sort()など)の複雑さについて知りたいです。 Javaの複雑さに関するすべての適切なドキュメントがありますか?

ありがとうございます。

+0

指定されているあなたも、[ドキュメント](https://docs.oracle.com/javase/8/を読み取ろうとしました見ることができるようにdocs/api /)?実装と複雑さに関する注記を含め、そこにはすべてあります。 – Axel

+0

あなたが言及した「美しい文書」は、通常、ここで眉をひそめます。あなたはcppreference.comでより良いです。 http://stackoverflow.com/questions/6520052/whats-wrong-with-cplusplus-comを参照してください。それはまた、 "STL"ではありません。参照してくださいhttp://stackoverflow.com/a/5205571/3313064 –

+0

私が実際に知りたいのは、すべての方法のドキュメントだけでなく、複雑さについてです。例を挙げておきますが、[link](https://docs.oracle.com/javase/8/docs/api/)にはHashMapのドキュメントが示されています。メソッドは "取得"を選択してください、記事は私にどのように(メソッドを取得する)働いています...しかし、どこに "取得"メソッドの複雑さはありますか?それは私にO(1)の複雑さまたはO(n)の要素を与えますか? @Axel –

答えて

1

https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(byte[]))から引用例えば、注意を払って公式Oracleのマニュアルをお読みください -

実装上の注意:ソートアルゴリズムウラジミールYaroslavskiy、ジョン・ベントレー、とジョシュアブロッホによってデュアルピボットクイックソートです。このアルゴリズムは、他のクイックソートを2次的パフォーマンスに低下させる多くのデータセットでO(n log(n))のパフォーマンスを提供し、通常は従来のクイックソートの実装よりも高速です。

あなたはO(n)は、n個(ログ)

+0

しかし、たびに私は複雑さを得ることができません。例えばhttps://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html#getKey()、getValue()メソッドの複雑さなし!!! –

+0

@ShikhorRoyそれは、 'getValue()'はアルゴリズムを実装していないからです。それは基底のデータへのアクセサです。 – Dewfy

+1

@ShikhorRoy時間の複雑さが指定されていなくても、ある方法。例:javaはarraylistソートアルゴリズムに[Timsot](https://en.wikipedia.org/wiki/Timsort)を使用します。 –