您的位置:首页 > 编程语言 > Java开发

一个简单的基于数组优先级队列的Java代码

2015-12-01 11:13 756 查看
优先级队列与普通的队列相比,区别在于他的数据项按关键字的值有序排列,数据项在插入的时候会按照顺序插入到合适的位置以确保队列的顺序。

像普通的队列一样,优先级队列在某些计算机系统中也有很多应用。优先级队列通常使用堆来实现,下列代码是基于数组的一个简单优先级队列的实现。

import java.io.*;
class PriorityQueue{
private int maxSize;
private long[] queArray;
private int nItems;

public PriorityQueue(int s){
maxSize=s;
queArray=new long[maxSize];
nItems=0;
}

public void insert(long item)
{
int j;
if(nItems==0)
queArray[nItems++]=item;
else
{
for(j=nItems-1;j>=0;j--)
{
if(item>queArray[j])
queArray[j+1]=queArray[j];
else
break;
}
queArray[j+1]=item;
nItems++;
}
}

public long remove()
{
return queArray[--nItems];
}
public long peekMin(){
return queArray[nItems-1];
}
public boolean isEmpty()
{
return (nItems==0);
}

public boolean isFull()
{
return (nItems==maxSize);
}
}

class PriorityQueueApp{
public static void main(String[] args) throws IOException{
PriorityQueue thePQ=new PriorityQueue(5);
thePQ.insert(33);
thePQ.insert(30);
thePQ.insert(32);
thePQ.insert(31);
while(!thePQ.isEmpty())
{
long item=thePQ.remove();
System.out.println(item+"");
}
System.out.println(" ");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: