私はプライオリティ キューのような並べ替えられたキューに取り組んでいます。私はすでにリストでそれを行いましたが、すでにうまく機能しています。今、私は配列でそれをしたいと思います。しかし、新しい要素を追加してソートされた配列に挿入するという論理的な問題が少しあります。
最終的な出力は次のようになります:
優先度: 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;
}
}