要想明白堆排序,首先要明白堆和数组是等价的本质,还要熟悉完全二叉树的性质。 有关完全二叉树的性质 http://www.cnblogs.com/joyeehe/p/7865578.html 最大堆排序源码: 注意:假设待排序数组是a[101],此程序,对索引1到101的单元排序,不处理a[0],因为 ...
分类:
编程语言 时间:
2017-11-20 23:21:14
阅读次数:
161
2017-11-17 一、哈夫曼树 (1)哈夫曼树(最优二叉树),是指权值为w1,w2,....,wn的n个叶结点所构成的二叉树中带权路径长度最小的二叉树。 (2)从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称做路径长度。 (3)树的路径长度(PL)是从树根到每一个 ...
分类:
其他好文 时间:
2017-11-17 20:02:21
阅读次数:
104
堆: ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大 ...
分类:
编程语言 时间:
2017-11-16 20:52:13
阅读次数:
249
数据结构只是静态的描述数据元素之间的关系,高效的程序需要在数据结构的基础上设计和选择算法。 算法与数据结构的区别: 1,算法是为了解决实际问题而设计 2,数据结构是算法需要处理的问题载体。 3,数据结构与算法相辅相成 算法具体五个基本特性:输入,输出,有穷性,确定性和可行性 数据结构分类,按照视点不 ...
分类:
其他好文 时间:
2017-11-12 18:38:52
阅读次数:
160
题意:有一棵如下的完全二叉树,求所有给定结点到根节点的路径的并有多少条边。 一开始联想到线段树,发现结点的排布很像线段树的标号。于是模仿线段树敲了一下,交上去发现3个点MLE了。。。 无心优化,跑去看题解。题解的思路是自底向上,先将询问的结点排序,最后从最深的节点开始往上递推,记录每层开始分叉的结点 ...
分类:
其他好文 时间:
2017-11-09 11:41:41
阅读次数:
156
分享回忆版去年的真题,市面上所出现的花钱的真题建议慎买。 数据结构(90) 一. 单项选择题(10) 1. 二元组形式表为A=(D,R),D={01,02,03,04,05}R={r},r={<01.,02>, <01,03>,<01,04>,<02,05>,<02,03>},则数据结构A 是()。 ...
分类:
其他好文 时间:
2017-11-08 22:30:30
阅读次数:
223
预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于 ...
分类:
编程语言 时间:
2017-11-08 00:52:27
阅读次数:
314
在二叉树中最重要的操作莫过于遍历,即按照某一顺序访问树中的所有节点。二叉树的前序遍历、中序遍历、后序遍历都有递归和循环两种不同的实现方法。每种遍历的递归实现都比循环实现要简洁很多。下面分享一个关于二叉树遍历到笔试题: 给定一棵完全二叉树,即树中的每一个节点有2个子节点或者没有子节点,每一个节点的值小 ...
分类:
编程语言 时间:
2017-11-05 00:26:42
阅读次数:
425
原文:什么是“堆”,"栈","堆栈","队列",它们的区别 堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根 ...
分类:
其他好文 时间:
2017-10-29 12:44:46
阅读次数:
104
题目描述 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种关系刚好组成一个 n 层的完全二叉树。 公民 i 的下属是 2 i 和 2 i +1。最下层的公民即叶子节点的公民是平民,平民没有下属,最上层的是国王,中间是各级贵族。 现在这个王国爆发了战争,国王需要决定每一个 ...
分类:
其他好文 时间:
2017-10-27 01:48:41
阅读次数:
186