3

二重にリンクされたリストを宿題として4つの並べ替えアルゴリズム(挿入、選択、シェル、クイックソート)を実装する必要がありますが、オンラインで見つけた並べ替えアルゴリズムのすべての説明で配列を使用する必要があるため、完全に失われます。このコードをDLLの疑似インデックスとして使用しようとしました。

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

            return x;
        }
    }

しかし、それだけでは十分ではありません。セッターではないからです。アイデアの男/女はいますか?

4

1 に答える 1

0

OK(私のコメントに基づく)1つの例は挿入です-参照: http: //en.wikipedia.org/wiki/Insertion_sort#List_insertion_sort_code_in_C.2B.2B-挿入ソートは実際には配列よりもリストに少し適しています(配列への挿入操作は、要素の移動を意味します)。

同じことがクイックソートhttp://en.wikipedia.org/wiki/Quicksort#Simple_versionにも当てはまります

選択ソートは、リストに実装するのは簡単です。2つのポインターを使用します。1つは(リストの先頭から開始し、毎回1ステップ進む)次のソートされていない位置を指すポインターです。リストの先頭から末尾までの最小要素を検索します。

シェルソートは挿入ソートに基づいており、そのアイデアに基づいて実装するのはそれほど難しいことではありません。

于 2011-12-12T06:45:07.443 に答える