我想在c#中实现这个,我准备好了我的链表类,但是当我使用这个Sort方法对类进行排序时会出现问题。如何优先考虑元素,以便优先级最高的元素首先出列。
public void Sort()
{
ListNode current=first;
int temp;
for (int i = 0; i < counter; i++)
{
while (current.Next != null)
{
if (current.Data > current.Next.Data)
{
temp = current.Data;
current.Data = current.Next.Data;
current.Next.Data = current.Data;
}
current = current.Next;
}
}
}
答案 0 :(得分:2)
稍微分析一下你的代码:
这看起来像冒泡的1个笔划,所以不要指望它对所有东西进行排序。
它只会确保最大值成为 last 元素。只有在你修复交换部分之后:
if (current.Data > current.Next.Data)
{
temp = current.Data;
current.Data = current.Next.Data;
current.Next.Data = temp;
}
答案 1 :(得分:0)
我认为你不必像这样对列表进行排序,只需创建一个插入例程,在正确的位置插入任何新元素,列表将始终排序。
Rgds GJ