对《大话数据结构》P396~P406—堆排序,进行了自己的理解并完善了代码。 一、堆排序之前需要掌握以下知识 1、完全二叉树 例如下图这样的,编号出现空档,就不是完全二叉树。 2、完全二叉树的性质 这三个性质中最重要的是1,看图就很好理解,即如果i>1,i的双亲节点是i/2。 3、堆 4、堆的性质 ...
分类:
编程语言 时间:
2016-04-24 15:45:24
阅读次数:
253
在数据结构里,堆是一类很重要的结构。堆结构是一组数组对象,我们可以把它当作是一颗完全二叉树。最大堆:堆里每一个父亲节点大于它的子女节点。最小堆:堆里每一个父亲节点小于它的子女节点。如图就是一个最大堆:实现代码时我的测试序列是:inta[]={10,11,13,12,16,18,15,17,..
分类:
其他好文 时间:
2016-04-23 23:14:02
阅读次数:
716
堆是什么?刚接触到这个概念估计都摸不着头脑,不知道堆是什么样个东西。简单介绍下,堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储有两种情况:(1).最大堆:每个父节点的都大于孩子节点。(2).最小堆:每个父节点的都小于孩子节点。举个例子..
分类:
其他好文 时间:
2016-04-23 23:09:57
阅读次数:
246
首先先来看一下树的结构:树是n(n>=0)个有限个数据的元素集合,形状像一颗倒过来的树。而二叉树就是树的一种特殊结构:完全二叉树的数组表示链表存储表示下面我就实现一下二叉链的这种结构:首先是它的节点的结构:template<typenameT>
structBinaryTreeNode
{
publ..
分类:
编程语言 时间:
2016-04-23 15:09:54
阅读次数:
248
二叉树的性质和常用操作代码集合性质:
二叉树的性质和常用代码操作集合
性质1:在二叉树的第i层上至多有2^i-1个结点
性质2:深度为k的二叉树至多有2^k - 1个结点
性质3:对任意一棵二叉树T,若终端结点数为n0,而其度数为2的结点数为n2,则n0 = n2 + 1
满二叉树:深度为k且有2^-1个结点的树
完全二叉树:深度为k,结点数为n的二叉树,如果其结点1...
分类:
其他好文 时间:
2016-04-22 20:26:52
阅读次数:
169
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。
二叉堆的定义
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
当父结点的键值总...
分类:
编程语言 时间:
2016-04-22 19:40:49
阅读次数:
188
二叉树二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子满二叉树:高度为N的满二叉树有2^N-1个节点的二叉树。完全二叉树:若设二叉树的深度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边..
分类:
其他好文 时间:
2016-04-22 16:46:56
阅读次数:
127
1. 基本术语 度(degree):一个节点的子树个数称为该节点的度; 树中结点度的最大值称为该树的度。 层数(level):从根结点开始算,根节点为1 高度(height)/深度(depth):节点的最大层数 2. 二叉树性质 满二叉树: 完全二叉树: 3. 二叉树的存储结构 1)顺序存储结构 2 ...
分类:
编程语言 时间:
2016-04-22 12:01:11
阅读次数:
310
二叉数二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。满二叉树:高度为N的满二叉树有2^N-1个节点的二叉树。完全二叉树:若设二叉树的深度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就..
分类:
其他好文 时间:
2016-04-22 01:18:41
阅读次数:
189
堆 用数组存储一个堆,看成一个近似的完全二叉树。堆有自己的尺寸(不一定与数组长度相同)。 堆的性质:父结点比儿子结点大是最大堆;父节点比儿子节点小是最小堆。 本文以最大堆为例。 对于一个结点i,其父结点标号是i/2向下取整,左子结点是2*i,右子结点是2*i+1。 堆的高度是log(n)。 堆排序的 ...
分类:
编程语言 时间:
2016-04-18 17:13:58
阅读次数:
378