//=================================================
// 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. JNI系列——PassData

    1.在工程目录下创建xxx.jni包并在该包下创建JNI类 2.在JNI类中声明所有的本地方法,并加载库 3.在MainActivity类中实例化JNI对象,并调用其方法 4.通过Javah生成的方法 ...

  2. 利用ajaxfileupload.js异步上传文件

    1.引入ajaxfileupload.js 2.html代码 <input type="file" id="enclosure" name="e ...

  3. MyBatis_ibatis和mybatis的区别【转】

    1. ibatis3.*版本以后正式改名为mybaits,它也从apache转到了google code下:也就是说ibatis2.*,mybatis3.*. 2. 映射文件的不同 ibatis的配置 ...

  4. 【CodeVS 1218】【NOIP 2012】疫情控制

    http://codevs.cn/problem/1218/ 比较显然的倍增,但是对于跨过根需要很多讨论,总体思路是贪心. 写了一上午,不想再说什么了 #include<cstdio> # ...

  5. dijkstra 最短路算法

    最朴素的做法o(V*V/2+2E)~O(V^2)#include<iostream>using namespace std;#include<vector>#include&l ...

  6. Kernel Methods (4) Kernel SVM

    (本文假设你已经知道了hard margin SVM的基本知识.) 如果要为Kernel methods找一个最好搭档, 那肯定是SVM. SVM从90年代开始流行, 直至2012年被deep lea ...

  7. 安装 Couchbase 服务器

    一. 下载安装包 首先,到官网下载安装包:http://www.couchbase.com/ 下载的地址:http://www.couchbase.com/download 选择 Windows 的版 ...

  8. 95C

    跑dijiestra每个点的最短路径 #include<iostream> #include<Vector> #include<cstring> #include& ...

  9. 22 java当中的数组

    class Test { public static void main(String args[]) { //数组的静态声明法 int arr[]={5,2,7,9,0}; //数组的动态声明法 i ...

  10. 使用IDEA自带的rest client参数传递乱码问题

     在idea使用rest client(idea自带的访问请求地址工具)调试的时候,有时出现中文会乱码的情况    解决方法如下:   1.打开IDEA安装路径下的bin文件夹里面的idea64.ex ...