package com.juxuny.heap;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Juxuny on 2015/2/10.
*/
public class Heap {
private int MAX = 2 <<...
分类:
编程语言 时间:
2015-02-10 21:48:29
阅读次数:
224
上一节我们写了树以及二叉树的知识
http://blog.csdn.net/wtyvhreal/article/details/43487095
堆是一种特殊的完全二叉树。
所有父节点都比子节点要小,这样的完全二叉树称为最小堆,反之叫最大堆。
下图一棵完全二叉树,调整为最小堆步骤:
向下调整的代码如下:
从上面可以得到:调...
分类:
编程语言 时间:
2015-02-04 18:50:47
阅读次数:
159
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