对于堆排序,首先要先知道什么是堆数据结构,堆数据结构就是一个完全二叉树,但是它有自己的性质.
例如最大堆的性质为:A[PARENT[i]]>=A[i];即每一个结点的值大于等于其左右孩子的值,小于等于其父节点的值。我们在这里只讨论最大堆的情况。我们知道一颗完全二叉树对应一个最大堆的形式,我们要做的就是将二叉树转化为最大堆,这就是所谓的最大堆的维护,我们定义函数MaxheapFY(A,i)来进行操作...
分类:
编程语言 时间:
2015-03-20 11:04:21
阅读次数:
177
今天 在 写 二叉树 的 顺序存储方式时,遇到了 一个数学问题。
已知,节点数 为 n 的 完全 二叉树的 深度 k 为 : k = log2 N + 1,log2N向下取整。查了 一下 C 里 math.h 只有 log 和 log10 的函数。log 是 以 e 为底数, log10 是以 10 为底数,那怎么 求 以2为底的树呢?
百度了 一下 才 知道 log2n = In(...
分类:
其他好文 时间:
2015-03-19 13:24:09
阅读次数:
111
线段树需要的空间。 区间为1-->n假设是一棵完全二叉树,且树高为i。完全二叉树性质:第i层最多有2^(i-1)个结点。那么 2^(i-1) = n; i = log2(n) + 1;共有 2^i - 1 个结点, 即 2^(log2(n) + 1) - 1个结点即2 * 2^log2(n...
分类:
其他好文 时间:
2015-03-18 20:03:28
阅读次数:
128
二叉树中每个节点最多只有两个子树,并且其子树有左右之分,次序不能任意颠倒。满二叉树和完全二叉树的区别如下(满二叉树是一种完全二叉树):二叉树的存储结构1) 顺序存储结构缺点:对非完全二叉树的顺序存储浪费空间。2) 链式存储结构1 typedef struct BiTNode {2 TElemTy.....
分类:
其他好文 时间:
2015-03-18 00:58:06
阅读次数:
196
题目:Populating Next Right Pointers in Each Node
/*
* LeetCode Populating Next Right Pointers in Each Node
* 题目:为树的每个节点增加一个next指针,指向树状结构排列时自己的右边节点,如果右边没有节点则置为null
* * Definition for binary tree wit...
分类:
其他好文 时间:
2015-03-17 21:54:58
阅读次数:
107
前言堆排序我是看了好半天别人的博客才有了理解,然后又费了九牛二虎之力才把代码写出来,我发现我的基础真的很差劲啊……不过自己选的路一定要坚持走下去。我试着把我的理解描述出来,如有不妥之处希望大家可以指点出来算法说明堆排序,是基于堆的排序。 堆也就是二叉树的一种(完全二叉树),首先要确定堆的定义,才可以...
分类:
编程语言 时间:
2015-03-17 07:03:33
阅读次数:
169
在顺序存储结构中,堆排序是一种非常不错的高级选择排序算法,普通情况和最差情况下都可以将时间复杂度控制在O(n * logn)。 堆排序可以用在顺序存储结构,是因为完全二叉树的一种独特性质。而这里还要先提一下满二...
分类:
编程语言 时间:
2015-03-15 21:30:04
阅读次数:
451
定义:二叉堆是一颗被完全填满的二叉树,底层是从左到右填入。即完全二叉树。一棵高为h的完全二叉树有2^h到2^(h+1)-1个节点。这个还是很好证明的。由于完全二叉树很有规律,所以我们用数组而不是指针来表示它。对于任意位置i上的元素,左儿子位置为2i,右儿子(2i+1),父亲为[i/2](向下取整) ...
分类:
其他好文 时间:
2015-03-15 10:49:29
阅读次数:
159
线段树转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问...
分类:
其他好文 时间:
2015-03-13 14:19:20
阅读次数:
197
#include
#include
// 创建一个结构体
typedef struct node{
int data;
struct node *left,*right;
}BiTreeNode;
int rear=0,front=0;//全局变量
//创建完全二叉树
BiTreeNode *CreateBiTree(int a[],BiTreeNode **Q,int n)...
分类:
编程语言 时间:
2015-03-13 00:25:14
阅读次数:
224