主要内容: 堆、最大堆、最小堆的基本概念 堆的操作:调整、创建、排序 采用堆实现优先级队列
基本概念 堆(heap)亦被称为:优先队列(priority queue) 逻辑定义:
n个元素序列{k1,k2...ki...kn},当且仅当满足下列关系时称之为堆: (ki = k2i,ki >= k2i...
分类:
其他好文 时间:
2014-05-19 08:45:41
阅读次数:
264
栈 队列 优先级队列
本章涉及到的三种存储数据类型:栈 队列 优先级队列
本章涉及到的存储数据类型是算法构思的辅助工具,而不仅仅是存储数据的工具。数据结构的生命周期比较短,在程序结束时,对应的数据结构的生命周期随之结束。
栈 队列 优先级队列是比较抽象的数据结构,通过接口对三种数据结构进行定义和实现,而实现的过程对用户来说是屏蔽的。
栈 (后进先出)
栈只允许访问一个数据项,即最后...
分类:
其他好文 时间:
2014-05-15 01:11:25
阅读次数:
179
概念
优先级队列,顾名思义,就是一种根据一定优先级存储和取出数据的队列。它可以说是队列和排序的完美结合体,不仅可以存储数据,还可以将这些数据按照我们设定的规则进行排序。优先级队列是堆的一种常见应用。有最大优先级队列(最大堆)和最小优先级队列(最小堆)。优先级队列是一种维护有一组元素构成的集合S的数据结构。
优先队列支持的基本运算
[cpp] view
plai...
分类:
其他好文 时间:
2014-05-03 17:00:11
阅读次数:
341
最大堆能够在O(1)的时间内取得集合中的最大值,并且在集合中加入新元素的时候,能够以O(Logn)的时间将新的元素插入到堆中。当取出最大的元素时,能够以O(Logn)的时间重新将堆整理成最大堆。最小堆同理。最大优先级队列的应用实例:基于优先级的作业调度,在所有等待调度的作业中,选择具有最大优先级作业...
分类:
其他好文 时间:
2014-05-01 09:21:41
阅读次数:
386