1.优先级队列的介绍
优先级队列是一种特殊的队列数据结构,它是队列,但又不完全是,因为它要将装载的数据进行优先级排序,找到一个最大或者最小优先级的元素,下一次出队列的元素就是这个元素,所以说它不完全是一个队列,优先级队列广泛应用于任务调度、资源分配、事件处理、Dijkstra算法、A*搜索算法等领域。
2.优先级队列的设计
个人感觉,设计一个优先级队列就是一个堆建立和调整的过程,因为要装载元素,所以我们采用vector来作为成员变量,后续就是对与这个vector变量的管理就行了,因为我们只是简单设计一个优先级队列,所以并没有设计在优先级队列中传入函数进行比较的过程,只是简单的比较大小的过程,首先我们要设计向上调整函数和向下调整函数,因为这个的构造函数和析构函数非常简单,这里我就不过多赘述了。
向上调整函数
向上调整函数就是子节点与父节点做比较,这里我们假设建小堆,如果子节点小于父节点,那么这个堆就是有问题的,所以要进行交换,将子节点与父节点进行交换,但是我们又要考虑交换以后得子节点也就是现在的父节点是否和他现在的父节点又是不对的关系的,所以我们要进行循环,只有当节点为0,也就是根节点或者,子节点小于父节点时,进行循环退出
void siftUp(size_t index)
{
while (index > 0)
{
int father = index / 2;
if (list[father] > list[index])
{