//=================================================
// File Name : PriorityQueue_demo
//------------------------------------------------------------------------------
// Author : Common //类名:PriorityQueue
//属性:
//方法:
class PriorityQueue{
private int maxSize; //队列的长度
private long[] queueArray; //创建队列的数组的引用
private int curNum; //创建当前元素的个数 public PriorityQueue(int s) { //构造函数
this.maxSize = s;
queueArray = new long[maxSize]; //创建对象
curNum = 0; //当前的元素的个数是0
} public void insert(long item){
int j;
if(curNum == 0){ //输入1个数,就是1个数
queueArray[curNum++] = item;
}else{ //左边是rear,右边是front,左边总比右边大
for(j=curNum-1;j>=0;j--){ //当有2个数时,若第2个数比第1个数大,则交换
if(item>queueArray[j]){ //j在-1的时候停止,rear=0,front=curNum-1
queueArray[j+1] = queueArray[j]; // 1 2 -> 1 1 -> 2 1
}else{break;} // 2 1 3 -> 2 1 1 -> 2 2 1 -> 3 2 1
}
queueArray[j+1] = item;
curNum++;
} } public long remove(){
return queueArray[--curNum];
} public long peekFront(){
return queueArray[curNum-1];
} public boolean isEmpty(){
return (curNum==0);
} public boolean isFull(){
return (curNum==maxSize);
} } //主类
//Function : PriorityQueue_demo
public class PriorityQueue_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
PriorityQueue queue_demo = new PriorityQueue(5);
queue_demo.insert(30);
queue_demo.insert(10);
queue_demo.insert(50);
queue_demo.insert(40);
queue_demo.insert(20);
while( !queue_demo.isEmpty()){
long value = queue_demo.remove();
System.out.println(value+"、");
}
} }

Java数据结构——优先级队列的更多相关文章

  1. Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用

    Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在 ...

  2. java PriorityQueue(优先级队列)

    先进先出描述了最典型的队列.队列规则是值在给定一组队列中的元素的情况下,确定下一个弹出队列的元素的规则,先进先出声明的是下一个元素应该是等待时间最长的元素 优先级队列声明下一个弹出的元素是最需要的元素 ...

  3. java使用优先级队列实现哈夫曼编码

    思路: 构建小根堆 根据小根堆实现哈夫曼树 根据哈夫曼树对数据进行编码 代码实现如下: /** * @Author: DaleyZou * @Description: 使用java实现一个哈夫曼编码的 ...

  4. 图解Java数据结构之队列

    本篇文章,将对队列进行一个深入的解析. 使用场景 队列在日常生活中十分常见,例如:银行排队办理业务.食堂排队打饭等等,这些都是队列的应用.那么队列有什么特点呢? 我们知道排队的原则就是先来后到,排在前 ...

  5. java数据结构---循环队列

    #java学习经验总结------循环队列的实现(数组) package datastructure;/*数组实现循环队列 队列first in first out*/ public class Ci ...

  6. java数据结构之队列

    队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有元素时,称为空队列.– ...

  7. Java数据结构之队列(Queue)

    1.使用场景 银行排队的案例: 2.队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则: 先存入队列的数据,要先取出. 后存入的要后取出 示意图:(使用数组模拟队列示意图) ...

  8. Java数据结构——循环队列

    普通顺序队列存在的问题在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位.出队时,则是头指针front后移一个单位.像这样进行了一定数量的入队和出队操作后, ...

  9. java数据结构-08队列

    一.什么是队列 队列是一种特殊的线性表,只能在头尾两端进行操作,特点是先进先出:就像排队买票一样,先来的先买 二.接口设计  三.代码实现 可以使用动态数组.链表等实现:这里两种实现栈与双向链表 1. ...

随机推荐

  1. [转] 使用Spring MVC构建REST风格WEB应用

    原文地址:http://fancy888.iteye.com/blog/1629120 对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理 ...

  2. iOS开发小技巧--修改按钮内部图片和文字之间的间距(xib)

    调整按钮的Edge属性,选择调整图片的Edge还是label的Edge,如图:

  3. 【BZOJ 3672】【UOJ #7】【NOI 2014】购票

    http://www.lydsy.com/JudgeOnline/problem.php?id=3672 http://uoj.ac/problem/7 链上的情况可以用斜率优化dp.树上用斜率优化d ...

  4. 51nod 1060反素数

    经典题. #include<map> #include<queue> #include<stack> #include<cmath> #include& ...

  5. python 进程间共享数据 (三)

    Python的multiprocessing模块包装了底层的机制,提供了Queue.Pipes等多种方式来交换数据. 我们以Queue为例,在父进程中创建两个子进程,一个往Queue里写数据,一个从Q ...

  6. eclipse安装ADT

    ADT安卓开发工具安装 ADT(Android Development Tools)安卓开发工具,是安卓在Eclipse IDE环境中的开发工具,为Android开发提供开发工具的升级或者变更,简单理 ...

  7. Maven-搭建maven web项目

    点击Eclipse菜单File->New->Other->Maven->Maven Project 在选择maven-archetype的界面进行如下操作:(其他选项基本与创建 ...

  8. DIV 文字强制换行

    一.对于div强制换行1.(IE浏览器)white-space:normal; word-break:break-all;这里前者是遵循标准.#wrap{white-space:normal; wid ...

  9. Python % 格式化字符串

    格式字符串 python 使用一个字符串作为模板 模板中含有格式符,为真实值预留位置 使用tuple或者字典来传递值 模板和值之间,用 % 来表示格式化操作 例子: 1) tuple 传值 print ...

  10. UOJ147 斗地主

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...