一个巨坑总算是填上了。。。从十一开始调直到今天才过掉,已经交了上50次了。。。在无数RE后才发现,本地评测真是啃爹啊啊啊啊!!!Mato大神说的好:"其实是一个超级大水题"。。。我是蒟蒻又被虐了。。。对于斜堆插入的最后一个节点,可以推出两点性质:(1)它一定是一个树中的极左节点(2)它肯定没有右子树...
分类:
其他好文 时间:
2014-10-18 16:45:36
阅读次数:
157
1 无顺序的一个数组求最大的k个数
1)先用快速排序对数组排序在找前k个;
2) 先建立k小顶堆,再扫描整个数组,堆顶为k个数中最小的数;
/************************************/
//寻找在数组中最大的K个数
//小顶堆插入
void constructHeap(int a[],int n,int value){
a[n] = value;
i...
分类:
其他好文 时间:
2014-08-29 16:10:48
阅读次数:
220
原理参考:http://blog.csdn.net/morewindows/article/details/6709644/**********************************************************/
//堆插入
void MinHeapfixup(int a[],int n,int num){
a[n] = num;
int j,temp;
te...
分类:
其他好文 时间:
2014-08-26 13:48:06
阅读次数:
187
数据结构应用场景示例哈希表要求所有键值对放入内存,查找可以在常数时间内完成。l 提取某日志访问百度次数最多的IPl 统计不同电话号码的个数堆插入和调整需要O(logn)时间,n为堆元素的个数,而获取堆顶元素只需要常数时间。l 求出海量数据前K大的数l 求海量数据流的中位数BitMap通常记录整数出现...
分类:
其他好文 时间:
2014-07-18 19:32:31
阅读次数:
218
(二叉)堆是一个数组,是一颗近似完全二叉树,分为大顶堆&小顶堆。表示堆的数组A有两个属性:(1)A.length表示数组元素的个数;(2)A.heap-size表示有多少个堆元素存储在数组A中。更多的关于堆的性质的介绍:算法导论第三版:p85-p89、编程珠玑:p141-p145。
堆的操作主要包括堆插入、堆删除两个,而堆插入设计到FixUp操作(自底向上调整),堆删除涉及到FixDown操作(自顶向下调整,大顶堆时对应算法导论上的MAX-HEAPIFY操作)。
本文主要给出的是大顶堆和小顶堆的基本操作的C...
分类:
其他好文 时间:
2014-06-22 13:58:41
阅读次数:
158