c#链接列表优先级分组

时间:2016-05-05 18:18:47

标签: c#

所以我想在C#中创建一个不使用系统构建的链表类的链表。

如果我有一份清单 A-3 B-1 C-5 D-3 E-4 F-1 G-3 H-5

我想将该列表排序为: F-1 B-1 G-3 D-3 A-3 E-4 H-5 C-5

字母代表书籍作者的姓氏首字母,该数字是作者的书评。

我只需要了解如何对列表项进行优先级分组。感谢。

2 个答案:

答案 0 :(得分:0)

查看优先级队列数据结构。来自wiki的描述:

在计算机科学中,优先级队列是抽象数据类型,它类似于常规队列或堆栈数据结构,但另外每个元素都具有"优先级"与之相关联。在优先级队列中,在具有低优先级的元素之前提供具有高优先级的元素。如果两个元素具有相同的优先级,则根据它们在队列中的顺序来提供它们。 虽然优先级队列通常使用堆来实现,但它们在概念上与堆不同。优先级队列是一个抽象概念,如"列表"或者"地图&#34 ;;正如列表可以用链表或数组实现一样,优先级队列可以用堆或各种其他方法实现,例如无序数组。

https://en.wikipedia.org/wiki/Priority_queue)。它用于按优先级排序。您可以在C5库(IntervalHeap类) - https://www.nuget.org/packages/C5

中找到实现

答案 1 :(得分:0)

为什么不使用普通的Lined List并对其进行排序。不清楚你是否真的在lsit中有字符串“A-1”或者这些是对象。我的猜测是对象。所以:

var sorted = list.OrderBy(o=>o.Ranking);

假设对象是

public class ObjThing
{
   public string Auhtor;
   public in Ranking;
}