1.堆:通常通过二叉堆,实为二叉树的一种,分为最小堆和最大堆,具有以下性质:任意节点小于它的所有后裔,最小元在堆的根上。堆总是一棵完全树 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。2.最小堆实现: 插入: 1) 将新插入的元素,放置到队列的尾部。 2) 若该元素小...
分类:
编程语言 时间:
2015-02-03 17:06:16
阅读次数:
386
背景:开始没有仔细想,后来@liu_jc 说简单遂1Y
思路:找出最大堆的鹅卵石数为max,最小堆数为min。如果max-min>=k,则成立。
证明:对最大堆编号为:a1,a2,a3~amin-1,amin~amax .对最小堆编号为:b1,b2~bmin.
让a1和b1,a2和b2,......,amin和bmin颜色一样。
...
分类:
其他好文 时间:
2015-02-01 17:52:30
阅读次数:
199
二叉堆是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆。 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆。...
分类:
其他好文 时间:
2015-01-26 16:23:16
阅读次数:
163
Google面试题股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值)。SOLUTION 1:1.维持两个heap,一个是最小堆,一个是最大堆。2.一直使maxHeap的size大于minHeap.3. 当两边si...
分类:
编程语言 时间:
2015-01-23 08:19:44
阅读次数:
5176
1.堆:类似二叉树
数组对象
2.种类: 最大堆->A[PARENT(i)] >= A[i]
最小堆->A[PARENT(i)]
3.建堆:Heap_max_Build
保持堆性质:Heap_max_Ify
堆排序:Heap_max_Sort
4.Code
#include
#include
#define PAR...
分类:
编程语言 时间:
2015-01-21 09:01:25
阅读次数:
143
Mergeksorted linked lists and return it as one sorted list. Analyze and describe its complexity.对于这道题,之前并不知道java中有一个封装好的数据结构--优先队列。优先队列其实相当于一个最大或最小堆,能...
分类:
其他好文 时间:
2015-01-18 18:24:56
阅读次数:
210
一. 二叉堆的性质 堆是一种具有堆序性的完全二叉树. 作为一种完全二叉树, (假定空树的高度是-1)它的高度是floor(logN), 高度为h的结点有2^h到2^(h+1) - 1个, 父节点的下标为floor(i/2), 左孩子的下标为2i, 右孩子的下标为2i+1 而所谓堆序性就是(以最小堆为...
分类:
其他好文 时间:
2015-01-12 09:14:35
阅读次数:
133
(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。二叉堆可以分为两种形式:最大堆和最小堆。若将记录按从大到小排列,建“小”顶堆。若将记录按从小到大排,建“大”顶堆。说明:在堆排序算法中,我们使用的是最大堆,最小堆通常用于构造优先队列。算法分析:时间复杂度是O(nlogn)。堆排序属于原址排序:...
分类:
编程语言 时间:
2015-01-05 23:09:50
阅读次数:
390
写这个玩意,我也是深深地感觉到自己数据结构的薄弱,可笑的是我一直以为学的还可以,结果一个堆结构就干了我半个月,才懂个大概= =,我也是醉了
BinaryTree.h二叉树的实现
/**
* 书本:《算法分析与设计》
* 功能:这个头文件是为了实现二叉树
* 文件:BinaryTree.h
* 时间:2014年12月15日18:35:51
* 作者:cutter_point
*/
// ...
分类:
编程语言 时间:
2015-01-04 10:12:18
阅读次数:
242
1. 堆 二叉堆是一个数组,它可以被看成一个近似的完全二叉树。 二叉堆有两种形式:最大堆和最小堆。在最大堆中,父节点的值总是大于等于任何一个子节点的值。因此,堆中的最大元素放在根节点中,并且在任一子树中,该字数包含的所有节点的值都不大于该子树根节点的值。最小堆是指父节点的值总是小于或等于任一子节.....
分类:
编程语言 时间:
2014-12-30 14:56:14
阅读次数:
209