使用双链接列表对算法进行排序

时间:2011-12-11 06:10:30

标签: doubly-linked-list sorting

我必须实现四个排序算法(插入,选择,Shell,Quicksort)和双向链表作为作业,但我完全迷失了,因为我在网上找到的那些排序算法的所有解释都需要使用数组。我试图将此代码用作我的DLL的伪索引:

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

            return x;
        }
    }

但这还不够,因为它不是一个制定者。任何想法的男人/女孩?

1 个答案:

答案 0 :(得分:0)

好的(根据我的评论)一个例子是insert - 请参阅:http://en.wikipedia.org/wiki/Insertion_sort#List_insertion_sort_code_in_C.2B.2B - insert sort实际上更适合列出而不是数组(因为数组中的insert操作意味着移动元素)。 / p>

同样适用于快速排序http://en.wikipedia.org/wiki/Quicksort#Simple_version

选择排序在列表上实现是微不足道的 - 你使用两个指针,一个(我称之为头部)指向下一个未排序的位置(从列表的开头开始,每次向前移动一步)另一个从头部到列表末尾搜索最小元素。

Shell排序基于插入排序,基于这个想法不应该太难实现。

相关问题