2011-12-11 13 views
1

二重リンクリストを持つ4つのソートアルゴリズム(挿入、選択、シェル、クイックソート)を宿題として実装する必要がありますが、ソートアルゴリズムIのすべての説明オンラインで見つかった場合、配列の使用が必要です。私は私のDLLのための擬似指標として、このコードを使用しようとしました:二重リンクリストでアルゴリズムをソート

public DoubleNode this[int num] 
    { 
     get 
     { 
      DoubleNode x = head; 
      for(int k = 0; k < num; k++) 
       x = x.Next; 

      return x; 
     } 
    } 

しかし、それはセッターではない原因は、十分ではありません。任意のアイデア男女?

+0

[Cでダブルリンクされたリストをソートする最良の方法は何ですか?](http://stackoverflow.com/questions/7614162/what-is-the-best-way-to-sort-a -double-linked-list-in-c) –

+2

あなたは間違った方向に向いています。配列をエミュレートする必要はありません。あなたがしたいことは、まずアルゴリズムを理解し、それがどのようにリストに異なって適用されるかを理解することです。 – Ofir

+0

@Ofir:実際にはリンクされたリストには大部分が*適用されません。 –

答えて

0

私のコメントに基づいてOKです。一例は、挿入です。http://en.wikipedia.org/wiki/Insertion_sort#List_insertion_sort_code_in_C.2B.2B - 実際には、配列の挿入操作は要素の移動を意味するため、配列の並べ替えには少し適しています。

同じリストの上に実装するのは簡単ですhttp://en.wikipedia.org/wiki/Quicksort#Simple_version

選択ソートをクイックに行く - あなたは二つのポインタ、いずれかを使用する(私はその頭呼びます)最初から始まる次ソートされていない位置(を指しますリストの最後から1つ前に移動する)と、先頭から最後までの最小要素を検索します。

シェルの並べ替えは挿入の並べ替えに基づいており、そのアイデアに基づいて実装するのは難しくありません。

+0

ありがとうございました。私は昨日宿題を終えました。ある意味では、私はコードを投稿する義務があるように感じるので、リストをオンラインで拾うアルゴリズムの実際の例があります。 –

関連する問題