第六章 堆排序 最小堆和最大堆:近似的完全二叉树 A[parent(i)]<=A[i]或者A[parent(i)]>=A[i] 建堆复杂度O(n) 排序O(nlgn) 实际应用中,快速排序一般优于堆排序。可用于优先队列等。 在一个包含n个元素的堆中,所有优先队列的操作均可在O(lgn)时间内完成。 ...
分类:
编程语言 时间:
2017-08-16 17:28:34
阅读次数:
145
线段树の一 区间和 具体线段树讲解:(搬运)http://blog.csdn.net/zearot/article/details/48299459 一:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询 ...
分类:
其他好文 时间:
2017-08-11 13:31:49
阅读次数:
140
Description Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2n. In each round of the tournament, all teams stil ...
分类:
其他好文 时间:
2017-08-08 22:58:00
阅读次数:
227
堆排序: n*log(n)的时间复杂度, 非稳定排序,原地排序。 它的思想是利用的堆这种数据结构,堆可以看成一个完全二叉树,所以在排序中比较的次数可以做到很少。 加上他也是原地排序,不需要申请额外的空间,效率也不错。 堆的重要特点是每一次循环都会建立新的最大或最小堆。 ...
分类:
编程语言 时间:
2017-08-05 23:37:00
阅读次数:
192
夏令营讲课内容整理 Day 2. 本日主要内容是并查集和堆。 并查集是一种树型的数据结构,通常用来处理不同集合间的元素之间的合并与查找问题。一个并查集支持三个基本功能:合并、查找和判断。举一个通俗的例子,我和lhz认识,lhz和hzc认识,那么也就可以断定我和hzc认识。 依照并查集的思想,我们把所 ...
分类:
其他好文 时间:
2017-08-03 14:54:42
阅读次数:
171
在很多数据结构和算法的书上,“堆排序”的实现都是建立在数组上,数组能够通过下标访问其元素,其这一特性在堆排序的实现上,使得其编码实现比链式结构简单,下面我利用链表实现堆排序。 在“堆”这种数据结构中,分为“大根堆”和“小根堆”,“大根堆”中其每一个双亲节点大于等于其子女节点,“小根堆”的定义与其相 ...
分类:
编程语言 时间:
2017-07-31 12:36:23
阅读次数:
184
代码参考: http://blog.csdn.net/iqrocket/article/details/8266365 http://blog.csdn.net/luno1/article/details/7951993 二叉树的性质: 1、在二叉树的第 i 层上,至多有 2 i-1 个节点。(i ...
分类:
编程语言 时间:
2017-07-25 16:35:01
阅读次数:
287
性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;性质4:具有n个结点的完全二叉树的深度必为 log2(n+1)性质5:对完全 ...
分类:
编程语言 时间:
2017-07-24 09:50:47
阅读次数:
224
树是一种比较重要的数据结构, 尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之 分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌 ...
分类:
Web程序 时间:
2017-07-23 19:41:50
阅读次数:
278
堆排序可归纳为两个操作: 1)建堆:根据初始数组去构造初始堆(构建一个完全二叉树,保证所有的父结点都比它的孩子结点数值大)。 2)调整堆:每次交换第一个和最后一个元素,输出最后一个元素(最大值),然后把剩下元素重新调整为大根堆。 当输出完最后一个元素后,这个数组已经是按照从小到大的顺序排列了。调整堆 ...
分类:
编程语言 时间:
2017-07-21 21:52:57
阅读次数:
199