泡沫

博客园 首页 联系 订阅 管理

2013年4月9日

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