1、堆排序的堆,其实是一个 完全二叉树。既是一个结点要么是叶子结点,要么必定有左右两个子节点的树。 2、堆有序:每个结点的值,都必须大于两个子节点。但是两个子结点的大小不作要求。 3、一棵大小为N的完全二叉树,高度为lgN(层)。 用数组实现堆,假设数组下标从0开始,下标为k的元素,它的左子树是2k ...
分类:
编程语言 时间:
2016-12-09 22:11:12
阅读次数:
174
1、树与树的表示
什么是树?
客观世界中许多事物存在层次关系
人类社会家谱
社会组织结构
图书信息管理
分层...
分类:
其他好文 时间:
2016-10-31 14:11:42
阅读次数:
264
一:堆排序 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序... ...
分类:
其他好文 时间:
2016-09-12 23:59:49
阅读次数:
366
在很多平衡树中都用到了树的旋转来维护,比如说红黑树,以及竞赛比较常用的树堆(Treap) 树的旋转既要能改变最大深度,使得平衡树平衡又不能破坏BST(二叉查找树,Binary Search Tree) 的性质,还是比较困难。 先不说BST的,先看看一棵普通的树是怎么旋转的(虽然是一样),然后再思考, ...
分类:
其他好文 时间:
2016-08-22 00:04:14
阅读次数:
320
完全二叉树(堆)和满二叉树的结构: 满二叉树的判断: 二叉树的层次遍历。 完全二叉树的判断: 二叉树的层次遍历。 堆的增删改查: 增:按照次序从最右边节点插入,从下往上冒泡。 删:将最右下角元素置于堆顶,从上往下冒泡。 改:增+删 查:O(logN) ...
分类:
其他好文 时间:
2016-07-24 10:30:59
阅读次数:
149
针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map法、Bloom filter法、数据库优化法、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法。...
分类:
其他好文 时间:
2016-06-21 06:58:03
阅读次数:
229
回顾前面的知识,我们学了二叉树,而二叉树有很多种存储方式,比如一维数组存储,链表存储,在刚刚学习建立二叉树的时候,我们用的是链表存储的方式,也就是利用结构体定义一个二叉树节点,然后将这些节点连接起来。现在为了更好地存储二叉树,我们学习了堆,即将二叉树存储在..
分类:
其他好文 时间:
2016-05-13 05:12:46
阅读次数:
138
在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能。但索引可以在大多数情况下大大提升查询性能高。在OLAP中尤其明显,要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识 ...
分类:
其他好文 时间:
2016-05-04 21:05:51
阅读次数:
265
HNOI2016 Day1 T2 网络 题意:给定一棵树,然后有若干个操作,可以新添加一条从u到v的权值为w的路径,或者将之前的一条路径删掉,动态询问不经过某个点的路径的最大权值 正解:树链剖分+线段树+堆 考场上面打了一个裸裸的树链剖分,连线段树都没套,复杂度是O(m^2 logn)的。当时真是傻 ...
分类:
其他好文 时间:
2016-05-03 12:11:52
阅读次数:
338
堆 用数组存储一个堆,看成一个近似的完全二叉树。堆有自己的尺寸(不一定与数组长度相同)。 堆的性质:父结点比儿子结点大是最大堆;父节点比儿子节点小是最小堆。 本文以最大堆为例。 对于一个结点i,其父结点标号是i/2向下取整,左子结点是2*i,右子结点是2*i+1。 堆的高度是log(n)。 堆排序的 ...
分类:
编程语言 时间:
2016-04-18 17:13:58
阅读次数:
378