一、堆先说说堆概念:如果有一个关键码的集合K={k0,k1,k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki<=K2i+1且Ki<=K2i+2(Ki>=K2i+1且Ki>=K2i+2)i=0,1,2…,则称为小堆(或大堆)。小堆(大堆)中:任一结点的关键码均小于(大于)等于它的左右孩子的关键码,位于堆顶结点的关键码最小(最大)
分类:
其他好文 时间:
2018-02-26 11:43:25
阅读次数:
136
[SHOI2012]随机树 题目大意( "网址戳我!" ) 随机树是一颗完全二叉树,初始状态下只有一个节点。 随机树的生成如下:每次随机选择一个叶子节点,扩展出两个儿子。 现在给定一个正整数$n$($n \le 100$) , 询问 叶子节点个数 为$n$的随机树: $q = 1$ : 叶子节点 的 ...
分类:
其他好文 时间:
2018-02-23 17:07:03
阅读次数:
240
一 堆 堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示: 二叉堆可以分为两种形式:最大堆和最小堆。在这两种堆中,结点的值都要满足堆的性质。 在最 ...
分类:
编程语言 时间:
2018-02-23 16:01:48
阅读次数:
210
摘要: 本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较排 ...
分类:
编程语言 时间:
2018-02-23 16:00:03
阅读次数:
187
实现优先队列结构主要是通过堆完成,主要有:二叉堆、d堆、左式堆、斜堆、二项堆、斐波那契堆、pairing 堆等。 1. 二叉堆 1.1. 定义 完全二叉树,根最小。 存储时使用层序。 1.2. 操作 (1). insert(上滤) 插入末尾 26,不断向上比较,大于26则交换位置,小于则停止。 (2 ...
分类:
其他好文 时间:
2018-02-23 12:02:40
阅读次数:
199
堆是一种数据结构,最大堆性质:堆中的节点值总是不大于其父节点的值,堆是一颗完全二叉树。 堆排序:利用堆将数组进行排序,堆中的根节点存储的是最大值,由此将队中的值先插入操作,再进行去除最大值放到排序数组中,heapify过程。 最大索引堆:堆中存储的元素是数组的索引 ...
分类:
编程语言 时间:
2018-02-18 21:55:00
阅读次数:
247
1. 先讲的堆,其实上周的dijkstra就有涉及到堆的内容,但是这周才详细的讲堆本身。堆逻辑上是一个二叉树,父节点的值比两个子节点都要大(或者比两个小)。堆是一个完全二叉树,所以很适合直接就用数组表示,因为父节点和字节点的位置关系是确定的(2n和2n+1)。 堆的特点是它一直把最大/最小值放在根节 ...
分类:
其他好文 时间:
2018-02-15 10:27:45
阅读次数:
153
平衡树是什么? 其实平衡树就是支持旋转的二叉查找树。 什么是二叉查找树呢? 其实就是满足(左子树(全部节点) < 根 < 右子树(全部节点))的一棵树,比如↓ (注意并不是每个节点都要是满的,也就是说它不一定是一棵完全二叉树) 那么二叉查找树有什么用呢? 假如我们要查询第k大的数,我们从根节点开始往 ...
分类:
其他好文 时间:
2018-02-14 23:39:39
阅读次数:
354
Day3数据结构,强无敌。 基本讲的是栈,队列,链表,都是些还会的操作,然后接着讲的就比较心凉凉了,先讲了堆,然后是hsah 栈,队列,链表问题都不大,笔记记得都还好,堆就凉凉了。 不会不会不会,没学过没学过没学过,现在只知道堆是一个“父亲都比儿子小”或是“父亲都比儿子大”的完全二叉树,书上也没有… ...
分类:
其他好文 时间:
2018-02-10 23:25:51
阅读次数:
193
堆排序是由1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特.弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了的一种排序算法( Heap Sort ); 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是 ...
分类:
编程语言 时间:
2018-02-05 23:27:10
阅读次数:
259