堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆结构的二叉树存储是:代码实现如下:#pragmaonce
#include<iostream>
#include<vector>
#include<assert.h>
usin..
分类:
其他好文 时间:
2016-05-13 04:45:55
阅读次数:
169
摘要:
作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。
堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点,当每个节点都大于等于它的两个子节点时,就称为大顶堆,也叫堆有序; 当每个节点都小于等于它的两个子节点时,就称为小顶堆。
...
分类:
编程语言 时间:
2016-05-13 01:18:32
阅读次数:
177
Description1..N
给出N个更新a, b
[a, b]区间内所有数 + 1
最后问
1..N是多少Algorithm线段树
写了一个线段树的类
然后线段树的核心数组不能放在类里面,不然就爆炸了
于是放在线段树外 过了
此外JAVA TLE
写了C++的这个线段树是一个完全二叉树
用数组实现 (a数组)
a中的每一个元素记录这个区间[l, r] 加的次数x
0号节点...
分类:
其他好文 时间:
2016-05-13 00:58:23
阅读次数:
209
本文参考文章:http://blog.csdn.net/morewindows/article/details/6709644
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。
二叉堆的定义
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或...
分类:
编程语言 时间:
2016-05-13 00:35:37
阅读次数:
186
堆
堆排序和合并排序一样,是一种时间复杂度为O(nlgn)的算法,同时和插入排序一样,是一种就地排序算法(不需要额外的存储空间)。堆排序需要用到一种被称为最大堆的数据结构,与java或者lisp的gc不一样,这里的堆是一种数据结构,他可以被视为一种完全二叉树,即树里面除了最后一层其他层都是填满的。也正是因为这样,树里面每个节点的子女和双亲节点的序号都可以根据当前节点的序号直...
分类:
编程语言 时间:
2016-05-12 20:05:22
阅读次数:
284
对于一颗搜索二叉树,最简单的方法就是用中序遍历,看是不是一个递增数列,如果是则是一颗搜索二叉树,如果不是则不是搜索二叉树。在这里用一个lastVisit去记录上一次搜索到的节点。整个过程就是先找到最左下角的节点,更新这个lastVisit为这个节点的值,然后按照中序遍历依次更新即可。代码如下。 对于 ...
分类:
其他好文 时间:
2016-05-12 10:29:42
阅读次数:
257
1.已知完全二叉树的层次遍历,求其前、中、后序 测试样例: ) 对于例1: 前序遍历:ABDGIJKLCEFH 中序遍历:DIGJLKBAECHF 后序遍历:ILKJGDBEHFCA 对于例2: 前序遍历:eadcbjfghi 中序遍历:abcdjefhgi 后序遍历:bcjdahigfe //用顺 ...
分类:
其他好文 时间:
2016-05-10 09:49:54
阅读次数:
249
首先呢,先来了解一个何为堆?堆数据结构是一种数组对象,它可被视为一棵完全二叉树结构。堆结构的二叉树存储是:最大堆:每个父节点的都大于孩子节点最小堆:每个父节点的都小于孩子节点最大堆:a[]={19,17,18,14,16,13,15,12,10,11}最小堆:a[]={10,11,13,12,16,18,15,17,14,..
分类:
其他好文 时间:
2016-05-09 07:14:43
阅读次数:
115
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。这是一个普通的堆,我们想把它变成最大堆,就必须了解最大堆的特点。然后我们对它进行调整,保证每个父节点的都大..
分类:
其他好文 时间:
2016-05-08 01:25:43
阅读次数:
241
当队列中某个对象优先级比其他对象更高时候,需要比其他对象先出队列而不管所在的位置时候,需要使用优先队列。
有如下的实现方法
- 插入在对尾,出队时候遍历整个队列
- 插入时即进行排序,出队时候固定在队首或者对尾
- 使用二叉查找树
- 使用二叉堆
往往在最后的最重要
堆是完全二叉树,使用数组就可以很好的实现。(vector更好,不需要再扩容)template ...
分类:
编程语言 时间:
2016-05-07 11:17:51
阅读次数:
156