私は最悪の与えるトラブル発見の良いリソース持っています場所での安定したソートアルゴリズムを。誰かが良いリソースを知っていますか?
ただのリマインダーは、渡された配列を使用することを意味し、ソートアルゴリズムは一定の余分なスペースのみを使用できます。安定とは、同じキーを持つ要素が、元の配列と同じ順序でソートされた配列に表示されることを意味します。
たとえば、単純なマージソートは最悪の場合および安定ですが、O (n )の余分なスペースを使用します。標準のクイックソートは安定したものにできますが、適切に配置されていますが、最悪の場合はO (n 2)です。ヒープソートは配置されています。最悪の場合はO (n ln n )ですが、安定していません。 ウィキペディアには、どのソートアルゴリズムにどの欠点があるかを示す優れたチャートがあります。安定性の3つの条件すべて、最悪の場合O (n ln nおよび所定の位置にある。
Katajainen、Pasanen、Teuholaによる「Practical in-place mergesort」と呼ばれる論文を見つけました。この論文は、最悪の場合がプレースマージソートバリアントにあると主張しています。結果を正しく理解している場合、配列の最初のと配列の最後ので(ボトムアップ?)mergesortを再帰的に使用し、2番目のをマージするためのスクラッチスペースとして。私はまだこれを読んでいるので、結果を正しく解釈しているかどうかについてのさらなる情報はありがたいです。
また、安定したクイックソートの最悪のケースにも非常に興味があります。私が理解していることから、クイックソートを最悪のケースO (n ln n )に変更するには、通常は安定性を損なう適切なピボットを選択する必要があります。
これは純粋に理論的な関心事であり、私には実用的な応用はありません。これら3つの機能すべてを備えたアルゴリズムを知りたいだけです。