##编程珠玑-堆
###定义 最小堆: 父节点小于其孩子节点
最大堆: 父节点大于其孩子节点
###优先级队列
插入操作:插入到堆。实现:插入到第一个空叶子,向上爬直到停止。
输出操作:输出队列中最小或最大的数。实现:输出根节点,最后一个叶子节点替换根节点,然后向下走直到停止。
###堆排序 首先建堆,然后不断输出最值并调整堆,如上优先队列的输出操作所示。 ###应用
构建哈夫曼码
计算大型浮点数集合的和
在存有10亿个数的文件里找出最小100万个数(建立100万个数的最大堆,100万个数小于根数据,如果100亿数据集合里的数据小于根数据,则插入最大堆,最后得到小于根数据的最小100万个数)