左倾堆(三)之 Java的实现
2014-04-10 09:35
2131 查看
概要
前面分别通过C和C++实现了左倾堆,本章给出左倾堆的Java版本。还是那句老话,三种实现的原理一样,择其一了解即可。目录
1. 左倾堆的介绍
2. 左倾堆的图文解析
3. 左倾堆的Java实现(完整源码)
4. 左倾堆的Java测试程序
转载请注明出处:https://www.geek-share.com/detail/2608093703.html
更多内容:数据结构与算法系列 目录
(01) 左倾堆(一)之 图文解析 和 C语言的实现
(02) 左倾堆(二)之 C++的实现
(03) 左倾堆(三)之 Java的实现
左倾堆的介绍
左倾堆(leftist tree 或 leftist heap),又被成为左偏树、左偏堆,最左堆等。它和二叉堆一样,都是优先队列实现方式。当优先队列中涉及到"对两个优先队列进行合并"的问题时,二叉堆的效率就无法令人满意了,而本文介绍的左倾堆,则可以很好地解决这类问题。
左倾堆的定义
/** * Java 语言: 左倾堆 * * @author skywang * @date 2014/03/31 */ public class LeftistHeapTest { public static void main(String[] args) { int a[]= {10,40,24,30,36,20,12,16}; int b[]= {17,13,11,15,19,21,23}; LeftistHeap<Integer> ha=new LeftistHeap<Integer>(); LeftistHeap<Integer> hb=new LeftistHeap<Integer>(); System.out.printf("== 左倾堆(ha)中依次添加: "); for(int i=0; i<a.length; i++) { System.out.printf("%d ", a[i]); ha.insert(a[i]); } System.out.printf("\n== 左倾堆(ha)的详细信息: \n"); ha.print(); System.out.printf("\n== 左倾堆(hb)中依次添加: "); for(int i=0; i<b.length; i++) { System.out.printf("%d ", b[i]); hb.insert(b[i]); } System.out.printf("\n== 左倾堆(hb)的详细信息: \n"); hb.print(); // 将"左倾堆hb"合并到"左倾堆ha"中。 ha.merge(hb); System.out.printf("\n== 合并ha和hb后的详细信息: \n"); ha.print(); } }
View Code
左倾堆的Java测试程序
左倾堆的测试程序已经包含在它的实现文件(LeftistHeapTest.java)中了,这里仅给出它的运行结果:== 左倾堆(ha)中依次添加: 10 40 24 30 36 20 12 16 == 左倾堆(ha)的详细信息: 10(2) is root 24(1) is 10's left child 30(0) is 24's left child 36(0) is 24's right child 12(1) is 10's right child 20(0) is 12's left child 40(0) is 20's left child 16(0) is 12's right child == 左倾堆(hb)中依次添加: 17 13 11 15 19 21 23 == 左倾堆(hb)的详细信息: 11(2) is root 15(1) is 11's left child 19(0) is 15's left child 21(0) is 15's right child 13(1) is 11's right child 17(0) is 13's left child 23(0) is 13's right child == 合并ha和hb后的详细信息: 10(2) is root 11(2) is 10's left child 15(1) is 11's left child 19(0) is 15's left child 21(0) is 15's right child 12(1) is 11's right child 13(1) is 12's left child 17(0) is 13's left child 16(0) is 13's right child 23(0) is 16's left child 20(0) is 12's right child 40(0) is 20's left child 24(1) is 10's right child 30(0) is 24's left child 36(0) is 24's right child
相关文章推荐
- 左倾堆 之 Java的实现
- Scalable IO in Java的代码实现
- 用Java实现网易云音乐爬虫(非selenium)
- 【多线程】JAVA——Thread类实现
- openCV java(JFrame) 实现人脸识别,人脸自动检测,自动保存裁剪后人脸
- java非递归实现Xml的遍历(多叉树遍历)
- 【java】HttpClient实现HTTP文件通用下载工具类
- 五子棋AI图形界面人机对战(JAVA实现)
- java两个栈实现一个队列
- Java UDP通信简单实现
- (Java)固定长度队列的实现
- java基于正则表达式实现时间日期的常用判断操作实例
- java swing mysql实现的员工工资管理系统项目源码附带视频教程
- JBI-Java 实现 SOA 的标准途径
- java枚举解析以及单例的实现
- Java隐藏银行卡号或者手机号中间几位,用*号代替工具类实现HideDataUtil
- 用Ant实现Java项目的自动构建和部署(转)
- java 单向链表实现
- Java使用NIO包实现Socket通信的实例代码
- Java中equals()方法重写实现代码