优先队列(堆)
优先队列和普通队列的区别在于,优先队列(堆)总是先优先处理队列中最小的元素。
优先队列(堆)允许至少下列两种操作:Insert(插入),以及DeleteMin(删除最小者),他的工作是找出、返回和删除优先队列中的最小元素。Insert操作类似于Enqueue(入队),而DeleteMin则是队列中Dequeue(出队)在优先队列中的等价操作。
一些简单的实现:
1、使用简单链表在表头以O(1)执行插入操作,并遍历该链表以删除最小元,这又需要O(N)时间。
2、始终保持排序状态,这使得插入排序代价高昂(O(N)),而DeleteMin花费低廉(O(1))。
3、使用二叉树查找,他对于这两种操作的平均运行时间都是(log N)