摘要:
大根堆: 根节点value不小于子节点的value,满足这条性质的二叉树即为大根堆。小根堆:根节点value不大于子节点的value,满足这条性质的二叉树即为小根堆。从大根堆的定义可知:在大根堆里要得到最大值只需o(1)的时间。所以很明显,大根堆可以求最大值和维护前k小的数。注意是前k小的数,不是前k大的数,因为当前要插入到堆里的数可以直接和堆里最大值考虑,如果比堆里最大的都还要小,那就那这个值放到堆里,这样就维护了前k小的数。如果k很大的话,要划分为很多个堆。小根堆和大根堆相反。堆的操作主要有:bool isEmpty(int *a); // 判断堆是否为空bool isFull(int * 阅读全文