想要用.Net6 需要下载vs2022
优先队列的定义:表示具有值和优先级的项的集合。 取消队列时,将删除优先级值最低的项。
.Net6 的优先队列是用4叉小顶堆实现
基本使用方法:
PriorityQueue<TElement,TPriority>类
入队:Enqueue()
出队:Dequeue()
构造函数:PriorityQueue<TElement,TPriority>()
PriorityQueue<int,int> priorityQueue=new PriorityQueue<int, int>();
priorityQueue.Enqueue(1, 1);
priorityQueue.Enqueue(2, 5);
priorityQueue.Enqueue(3, 8);
priorityQueue.Enqueue(4, 4);
while(priorityQueue.Count > 0)
{
Console.WriteLine(priorityQueue.Dequeue());
}
代码结果:
在构造函数中可以自定义优先级比较
如下将优先级按逆序排列
PriorityQueue<int, int> priorityQueue = new PriorityQueue<int, int>(Comparer<int>.Create((a, b) => b.CompareTo(a) ));
priorityQueue.Enqueue(1, 1);
priorityQueue.Enqueue(2, 5);
priorityQueue.Enqueue(3, 8);
priorityQueue.Enqueue(4, 4);
while(priorityQueue.Count > 0)
{
Console.WriteLine(priorityQueue.Dequeue());
}
代码结果: