2011-07-25 8 views
7

コンピュータ科学の教科書で頻繁に議論されている挿入ソート、選択ソート、バブルソートなどのいくつかのソートアルゴリズムです。整数またはオブジェクトの配列が与えられているので、これらのホイールを再び改造するのではなく、配列をソートするために特定のソートアルゴリズムを適用することを選択できるJava 6言語APIが組み込まれていますか? Java 6に組み込まれていない場合は、この機能を実行するオープンソースライブラリがありますか?Java 6ではどのようなソートアルゴリズムが使用できますか?

+1

これはJava 7とは異なります - http://stackoverflow.com/questions/4018332/is-java-7-using-tim-sort-for-the-method-arrays-sort –

+1

@amcを参照してください。あなたは受け入れられた答えがない48の質問があります。おそらくあなたは答えをフォローアップして受け入れられるかもしれません。 –

答えて

22

Arrays.sort()のメソッドは、すべてのプリミティブ型配列でクイックソートを使用します。

ソートアルゴリズムはジョンL.ベントレーとM.ダグラス・マクロイの「エンジニアリングソート機能」、ソフトウェアの実践と経験、巻から適応調整されたクイックソート、です。 23(11)P. 1249-1265(1993年11月)。このアルゴリズムは、他のクイックソートを二次的な性能に低下させる多くのデータセットでn * log(n)のパフォーマンスを提供します。

メソッドは、マージソートを使用します。この種類はArrays.sort(Object[])Arrays.sort(T[], Comparator<? super T>)でも使用されています。

ソートアルゴリズムは、変更されたマージソートです(下位サブリストの最上位要素が上位サブリストの最下位要素よりも小さい場合はマージが省略されます)。このアルゴリズムは、n log(n)の性能を保証します。この実装は、指定されたリストを配列にダンプし、配列をソートし、リスト内の各要素を配列の対応する位置からリセットします。これにより、リンクされたリストを定位置でソートしようとすることによるn2 log(n)のパフォーマンスが回避されます。

+3

'Arrays.sort(Object [])'もマージソートを使用することに注意してください。答えのどこかでそれを絞ることができれば、私は私のものを取り除くことができました。 –

+0

@Bartありがとう、私はそれを私の答えに加えました。 – Marcelo

+0

Marcelo、乾杯! :) –

3

あなたは一般的には選択しないでください(とにかく組み込みの仕分けで)。 Collectionsクラスはほとんどのニーズに十分に効率的でなければならないsortメソッドを提供します。

関連する問題