我必须实现四个排序算法(插入,选择,Shell,Quicksort)和双向链表作为作业,但我完全迷失了,因为我在网上找到的那些排序算法的所有解释都需要使用数组。我试图将此代码用作我的DLL的伪索引:
public DoubleNode this[int num]
{
get
{
DoubleNode x = head;
for(int k = 0; k < num; k++)
x = x.Next;
return x;
}
}
但这还不够,因为它不是一个制定者。任何想法的男人/女孩?
答案 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排序基于插入排序,基于这个想法不应该太难实现。