编程珠玑-堆       

##编程珠玑-堆

###定义 最小堆: 父节点小于其孩子节点

最大堆: 父节点大于其孩子节点

###优先级队列

插入操作:插入到堆。实现:插入到第一个空叶子,向上爬直到停止。

输出操作:输出队列中最小或最大的数。实现:输出根节点,最后一个叶子节点替换根节点,然后向下走直到停止。

###堆排序 首先建堆,然后不断输出最值并调整堆,如上优先队列的输出操作所示。 ###应用

构建哈夫曼码

计算大型浮点数集合的和

在存有10亿个数的文件里找出最小100万个数(建立100万个数的最大堆,100万个数小于根数据,如果100亿数据集合里的数据小于根数据,则插入最大堆,最后得到小于根数据的最小100万个数)