Java数据结构——优先级队列
//=================================================
// 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数据结构——优先级队列的更多相关文章
- Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用
Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在 ...
- java PriorityQueue(优先级队列)
先进先出描述了最典型的队列.队列规则是值在给定一组队列中的元素的情况下,确定下一个弹出队列的元素的规则,先进先出声明的是下一个元素应该是等待时间最长的元素 优先级队列声明下一个弹出的元素是最需要的元素 ...
- java使用优先级队列实现哈夫曼编码
思路: 构建小根堆 根据小根堆实现哈夫曼树 根据哈夫曼树对数据进行编码 代码实现如下: /** * @Author: DaleyZou * @Description: 使用java实现一个哈夫曼编码的 ...
- 图解Java数据结构之队列
本篇文章,将对队列进行一个深入的解析. 使用场景 队列在日常生活中十分常见,例如:银行排队办理业务.食堂排队打饭等等,这些都是队列的应用.那么队列有什么特点呢? 我们知道排队的原则就是先来后到,排在前 ...
- java数据结构---循环队列
#java学习经验总结------循环队列的实现(数组) package datastructure;/*数组实现循环队列 队列first in first out*/ public class Ci ...
- java数据结构之队列
队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有元素时,称为空队列.– ...
- Java数据结构之队列(Queue)
1.使用场景 银行排队的案例: 2.队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则: 先存入队列的数据,要先取出. 后存入的要后取出 示意图:(使用数组模拟队列示意图) ...
- Java数据结构——循环队列
普通顺序队列存在的问题在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位.出队时,则是头指针front后移一个单位.像这样进行了一定数量的入队和出队操作后, ...
- java数据结构-08队列
一.什么是队列 队列是一种特殊的线性表,只能在头尾两端进行操作,特点是先进先出:就像排队买票一样,先来的先买 二.接口设计 三.代码实现 可以使用动态数组.链表等实现:这里两种实现栈与双向链表 1. ...
随机推荐
- 【CodeVS 1163】访问艺术馆
http://codevs.cn/submission/2367697/ loli蜜汁(面向高一)树形dp是这道题的改编. 改编后的题目中每个展览厅的有多个不同的画,偷画的时间和画的价值也不同,求最大 ...
- 【BZOJ 2194】快速傅立叶之二
随便代换一下把它变成多项式乘法,及$C[T]=\sum_{i=0}^{T}A[i]×B[T-i]$这种形式,然后FFT求一下就可以啦 #include<cmath> #include< ...
- 关于二叉排序树 BST
#include<stdio.h> #include<stdlib.h> typedef struct node { double w; struct node *l,*r; ...
- SpringMVC 部署项目静态资源文件访问问题
问题:采用SpringMVC 部署项目后程序加载或用浏览器访问时出现类似的警告,2011-01-19 10:52:51,646 WARN [org.springframework.web.servle ...
- 美化select下拉框
直接上干货: 需要的材料: change_select.js (文末会给出下载地址) 使用方法: 1.调用方法:<script type="text/javascript" ...
- OPENGGL深度测试
深度测试是为了解决那些在绘图过程中本应该被隐藏的面结果却出现了,例如: 绘图代码中先绘制了一个一个近处的立方体,后绘制了一个远处的立方体,结果在绘制过程中,远处的立方体总是在近处的立方体后绘制,所以在 ...
- 【poj3709】 K-Anonymous Sequence
http://poj.org/problem?id=3709 (题目链接) 题意 给出一个n个数的序列,要求将其中一些数改为另一个比它小的数,改动的花费为两数的绝对值,完成改动后使得整个序列中出现过的 ...
- 【poj1017】 Packets
http://poj.org/problem?id=1017 (题目链接) 题意 一个工厂制造的产品形状都是长方体盒子,它们的高度都是 h,长和宽都相等,一共有六个型号,分别为1*1, 2*2, 3* ...
- [iOS Xcode注释插件]
来自onevcat的VVDocumenter-Xcode,地址是:https://github.com/onevcat/VVDocumenter-Xcode 使用方式:按三下"/" ...
- MVC 路由
1.ASP.NET MVC框架中提供的URL路由机制能够使URL不必映射到应用程序的特定物理文件. 2.当用户访问基于MVC模式创建的网站时,只需要在浏览器地址栏里输入类似于下面的URL: http: ...