优先队列(堆)

优先队列和普通队列的区别在于,优先队列(堆)总是先优先处理队列中最小的元素。

优先队列(堆)允许至少下列两种操作:Insert(插入),以及DeleteMin(删除最小者),他的工作是找出、返回和删除优先队列中的最小元素。Insert操作类似于Enqueue(入队),而DeleteMin则是队列中Dequeue(出队)在优先队列中的等价操作。

一些简单的实现:

1、使用简单链表在表头以O(1)执行插入操作,并遍历该链表以删除最小元,这又需要O(N)时间。

2、始终保持排序状态,这使得插入排序代价高昂(O(N)),而DeleteMin花费低廉(O(1))。

3、使用二叉树查找,他对于这两种操作的平均运行时间都是(log N)

原文地址:https://www.cnblogs.com/zhousong918/p/10231690.html