My集合框架第五弹 最小堆
二叉堆(以最小堆为例),其具有结构性质和堆序性质
结构性质: 堆是一棵完全的二叉树,一颗高为h的完全二叉树有2^h到2^h-1个节点,高度为log N
而且该结构可以很容易的使用数组来表示:对于数组中任一位置i上的元素,其左儿子在位置2i上,右儿子在2i+1,其父节点在[x/2]处
堆序性质:在一个堆中,对于每一个节点X,X的父亲中的关键字小于或等于X中的关键字
也就是说:最小元总可以在根处找到
主要的操作为插入和删除:
以数组存储为例,算法在代码中体现:
/**
* 向堆中插入元素x,
* 利用堆的性质,在一个堆中,对于每一个节点X,X的父亲中的关键字都小于或者等于X中的关键字,
* ps根节点除外(根节点没有父节点),时间复杂度为logN
* step1:如果堆没有满,在完全二叉树的下一个位置插入一个空穴
* step2:判断空穴是否存在父节点,如果不存在,直接插入;否则,step3;
* step3:(x.value>=[x/2].value)?step4:step5;
* step4:将X直接放在该空穴,return
* step5:将父节点的值移入空穴中,空穴就朝着根的方向上前进,回到step2;
* @param x
*/
public void insert(Comparable x){
if(cursize == array.length-1){
//堆已经满了,需要重新调整
rebuild();
}
if(cursize==0){
//没有父节点
array[1] = x;
cursize++;
}else{
int temp = ++cursize;
while(temp>1 && x.compareTo(array[temp/2])<0){
//父节点下移
array[temp] =array[temp/2];
temp/=2;
}
//空穴插入
array[temp] = x;
}
}
删除操作:
/**
* 删除堆中的最小元素并返回,方式与插入向反,时间复杂度为logN
* step1:将根节点出视为空穴X
* step2:if(空穴X的左右子树都存在) step3;else if(空穴只存在左子树) step4 ;else step5
* step3:if(空穴的X的左子树2X>X的右子树2X+1) 空穴<-->右子树;else 空穴<-->左子树;finally 继续step2
* step4:空穴和左子树交换,空穴已就位,且满足完全二叉树的要求
* step5:空穴和最后一个元素交换位置
* @return
*/
public Comparable deleteMin(){
if(isEmpty())
return null;
Comparable min = array[1];
int temp = 1;
while(2*temp<=cursize){
if(2*temp+1<=cursize){
//左右子树都存在
if(array[2*temp].compareTo(array[2*temp+1])>0){
array[temp] = array[2*temp+1];
temp = 2*temp+1;
}else{
array[temp] = array[2*temp];
temp = 2*temp;
}
}else{
//只存在左子树
array[temp] = array[2*temp];
temp = 2*temp;
}
}
array[temp] = array[cursize--];
return min;
}
测试代码:
@Test
public void test() {
BinaryHeap heap = new BinaryHeap();
for(int i = 19;i>1;i--){
heap.insert(i);
// heap.printHeap();
}
while(!heap.isEmpty()){
System.out.print(heap.deleteMin()+"\t");
}
}
结果: aaarticlea/png;base64,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" alt="" />
好饿啊。。。。。。。。。。。。。。
My集合框架第五弹 最小堆的更多相关文章
- My集合框架第六弹 左式堆
左式堆(Leftist Heaps)又称作最左堆.左倾堆.左式堆作为堆的一种,保留了堆的一些属性. 第1,左式堆仍然以二叉树的形式构建: 第2,左式堆的任意结点的值比其子树任意结点值均小(最小堆的特性 ...
- Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap
Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的ke ...
- java 集合框架(十五)Deque
一.概述 Deque是Queue的子接口,我们知道Queue是一种队列形式,而Deque则是双向队列,它支持从两个端点方向检索和插入元素,因此Deque既可以支持LIFO形式也可以支持LIFO形式.D ...
- Java源码解析——集合框架(五)——HashMap源码分析
HashMap源码分析 HashMap的底层实现是面试中问到最多的,其原理也更加复杂,涉及的知识也越多,在项目中的使用也最多.因此清晰分析出其底层源码对于深刻理解其实现有重要的意义,jdk1.8之后其 ...
- My集合框架第四弹 HashTable(链表解决冲突)
package com.wpr.collection; import java.util.LinkedList; import java.util.List; public class HashTab ...
- My集合框架第三弹 AVL树
旋转操作: 由于任意一个结点最多只有两个儿子,所以当高度不平衡时,只可能是以下四种情况造成的: 1. 对该结点的左儿子的左子树进行了一次插入. 2. 对该结点的左儿子的右子树进行了一次插入. 3. 对 ...
- 浅谈集合框架五——集合框架扩展:Collections工具类的使用,自定义比较器
最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...
- J.U.C体系进阶(五):juc-collections 集合框架
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-collections 集合框架 ConcurrentHashMap C ...
- 十五、Java基础---------集合框架体系以及List
在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...
随机推荐
- Java自增原子性问题(测试Volatile、AtomicInteger)
这是美团一面面试官的一个问题,后来发现这是一道面试常见题,怪自己没有准备充分:i++;在多线程环境下是否存在问题?当时回答存在,接着问,那怎么解决?...好吧,我说加锁或者synchronized同步 ...
- 表单Ext.form.FormPanel(转)
1.表单 对于传统的b/s应用来说,数据录入元素是放在表单<form>标签里面的.而对于ExtJS应用来说,则可以直接使用FormPanel控件来存放表单中的元素.FormPanel继承自 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:1.资源准备
最近,在VmwareStation 10虚拟机上,基于CentOS5.4安装Oracle 11g RAC,并把过程记录下来.刚开始时,是基于CentOS 6.4安装Oracle 11g RAC, 没有 ...
- ECSide标签属性说明之<ec:column>
<ec:column>标签 ◆ 属性: columnId描述: 单元格的id,相当于<td>的id属性 ◆ 属性: title描述: 列在列表表头里显示的名称. ◆ 属性: p ...
- js的预解析和代码执行相关规则
JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个就是执行阶段. 1.编译阶段:又称为预解析阶段,在这个阶段JavaScript解释器将完成把JavaScript脚本代码转换到字节码. ...
- hibernate建表多对多建表
Student.java package cn.itcast.hiberate.sh.domain; import java.util.Set; public class Student { priv ...
- 17、Wi-Fi Direct
Wi-Fi Direct简介 从Android4.0(API Level=14)开始,允许通过Wi-Fi模块在两个移动设备之间建立直接连接(这种技术称为Wi-Fi Direct),这种连接不需要无线路 ...
- CMDB属性及分类问题思考
定义的烦恼 在某一次系统监控的讨论会议上,我随便提出了个问题:“如何定义一个系统?”,结果答案就五花八门起来了,会议也跑题了. 为什么问这个问题,是因为某些同事觉得某个系统比较大,就往下分为子系统.组 ...
- vector容器总结.xml
1 清空所有元素 m_itemVector.clear(); 2 遍历 vector<ITEM_CHECK>::iterator iter=m_itemVector.b ...
- fork()函数详解
linux中fork()函数详解(原创!!实例讲解) (转载) 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程 ...