我正在研究像优先队列这样的排序队列。我已经用 List 做到了,而且效果很好。现在我想用一个数组来做。但是我在添加一个新元素并将其插入排序数组时遇到了一点逻辑问题。
最终输出应该是这样的:
优先级:5 值:x
优先级:4 值:iso
....(等等)
所以具有最高优先级的元素应该在索引 = 0 上。
我只是不知道(是的,我知道切换它真的很简单,但我就是做不到:/) 怎么做...
我已经尝试了一些事情,但我被困住了......:/可以请任何人帮忙吗?
这是我的代码:
public class Queue {
private QueueElem[] a;
public Queue(int capacity)
{
QueueElem[] tempQueue = new QueueElem[capacity];
a= tempQueue;
}
public void enqueue(int p, String v)
{
QueueElem neu = new QueueElem(p,v);
int i=0;
while(i<a.length)
{
if (a[i] == null)
{
a[i] = neu;
break;
}
i++;
}
}
public void writeQueue()
{
int i=0;
while((i< a.length) && (a[i] != null))
{
System.out.println("Priority: " + a[i].priority + " Value: " + a[i].value);
i++;
}
}
public static void main(String args[])
{
Queue neu = new Queue(10);
neu.enqueue(4,"iso");
neu.enqueue(2,"abc");
neu.enqueue(5,"x");
neu.enqueue(1,"abc");
neu.enqueue(4,"bap");
neu.enqueue(2,"xvf");
neu.enqueue(4,"buep");
}
}//end class Queue
class QueueElem {
int priority;
String value = new String();
public QueueElem(){ }
public QueueElem(int p, String v)
{
this.priority = p;
this.value = v;
}
public int getPrio()
{
return this.priority;
}
public String getValue()
{
return this.value;
}
}