2012-03-26 6 views
1

O(n^2)より良い時間で実行される挿入ソート以外のものを使用して、リンクされたリストを二重にソートする必要があります。私はクイックソートの使用を考えていましたが、アルゴリズムの理解に問題がありました。私が始めるのを助けるかもしれない何か理解しやすい文書に向けて私を指摘できますか?リンクリストのクイックソートを実装していますか?

+6

におけるアルゴリズムの優れた高レベルの記述[Hungerianフォークダンスを使用してクイックソートの可視のビデオ](http://www.youtube.com/watch?v=ywWBy6J5gz8)もあります。 –

+2

これを別のデータ構造に抽出してソートすることは許可されていますか、またはそれを適切にソートする必要がありますか?配列への抽出、クイックソートの実行、リンクリストへの戻しは、2n + nlognのようなものでなければなりません。 – captncraig

+0

いいえ、ノードを格納するために他のデータ構造を使用することはできません。 –

答えて

2

私は実際にmerge sortをお勧めします。二重にリンクされたリストではより意味をなさないように感じ、O(n log n)のランタイムを持っています。 基本的に、中間を見つけてリストを半分に分割し、各半分をそれぞれソートしてから、2つを線形時間で結合します。

スレッドがあります。hereは、Javaを習得している場合には読み込みが簡単ではないかもしれないが、良い出発点かもしれません。

this site.

+0

重要な点は、クイックソートとは対照的に、*最悪の場合のランタイムも 'O(n * log n)'であることです。また、実装が簡単です:) –

関連する問題