所以我想在C#中创建一个链表,而不是使用系统构建的链表类。
如果我有A-3 B-1 C-5 D-3 E-4 F-1 G-3 H-5的列表
我想将该列表排序如下:F-1B-1G-3D-3A-3E-4H-5C-5
字母表代表图书作者的姓氏首字母,数字代表作者对图书的评分。
我只需要了解如何对列表项进行优先级分组。谢谢。
发布于 2016-05-06 02:29:23
看看优先级队列数据结构。来自wiki的描述:
在计算机科学中,优先级队列是一种抽象数据类型,它类似于常规队列或堆栈数据结构,但另外每个元素都具有与其关联的“优先级”。在优先级队列中,具有高优先级的元素在具有低优先级的元素之前被服务。如果两个元素具有相同的优先级,则根据它们在队列中的顺序为它们提供服务。虽然优先级队列通常是使用堆实现的,但它们在概念上与堆是不同的。优先级队列是一个抽象概念,类似于“列表”或“映射”;正如列表可以用链表或数组实现一样,优先级队列也可以用堆或各种其他方法(如无序数组)实现。
(https://en.wikipedia.org/wiki/Priority_queue)。它用于按优先级排序。您可以在C5库(IntervalHeap类)中找到实现- https://www.nuget.org/packages/C5
发布于 2016-05-06 02:35:33
为什么不使用普通的行列表并对其进行排序。不清楚列表中是否真的有字符串"A-1“,或者这些字符串是否是对象。我的猜测是对象。也是如此:
var sorted = list.OrderBy(o=>o.Ranking);假设对象为
public class ObjThing
{
public string Auhtor;
public in Ranking;
}https://stackoverflow.com/questions/37057559
复制相似问题