heaps, priority queue, nummer og navn
jeg har lavet priority queue på en heap, se vedlagte kode, denne skal bruges til at lave en kø med nummer(prioritet) og navn. Jeg har problemer med at implementere dette og kunne godt bruge et lille spark i den rigtige retning. Det jeg ikke kan finde ud af er at for priority queue til at arbejde på brugeren(nummer og navn) således at de hænger sammen.import java.math.*;
public class Heap
{
private int [] Element;
private int HeapSize;
public void Heap(int heapsize)
{
HeapSize = heapsize;
Element = new int [heapsize +1];
}
private void MakeHeap()
{
int index;
for (index = HeapSize/2; index >= 1; --index)
Insert(Element[index], index, HeapSize);
}
private void MakeRandomHeap(int upperLimit)
{
int index;
for (index = 1; index <= HeapSize; ++index)
Element[index] = (int) (upperLimit* Math.random());
}
private void Insert (int newElement, int start, int maxheap)
{
int marker = 2 * start;
while (marker <= maxheap)
{
if (marker < maxheap && Element[marker] < Element[marker + 1])
marker++;
if (newElement >= Element[marker])
break;
else {
Element[start] = Element[marker];
start = marker;
marker = 2 * start;
}
}
Element[start] = newElement;
}
public void Sort()
{
int tempItem;
int maxheap = HeapSize;
while (maxheap > 0)
{
tempItem = Element[maxheap];
Element[maxheap] = Element[1];
Insert(tempItem, 1, --maxheap);
}
}
public int getElement(int index)
{
return Element[index];
}
public int getHeapSize()
{
return HeapSize;
}
public void udskriv()
{
int taeller;
for (taeller = 1; taeller <= HeapSize; taeller++)
System.out.println(\"plads nummer \"+taeller+\" : \"+Element[taeller]);
}
public static void main(String[] args)
{
Heap hp = new Heap();
hp.Heap(10);
hp.MakeHeap();
hp.MakeRandomHeap(10);
hp.udskriv();
System.out.println(\"her kommer sort\");
hp.Sort();
hp.udskriv();
System.out.println(\"test\");
}
}
