So ich hab jetzt angefangen aber es funktioniert nicht.
Wäre nett wenn mal jmd drüber schauen kann.
Code:
public class Heap {
static int count = 0;
int[] Heap;
static int n = count;
public Heap(int maxlength) {
Heap = new int[maxlength];
}
public void append(int value) {
Heap[count] = value;
count++;
this.überführeInHeap(Heap);
}
// vertauscht in einem Array die Einträge mit Index x und y
private static void vertausche(int[] a, int x, int y) {
int z = a[x];
a[x] = a[y];
a[y] = z;
}
// versickert im Array mit Länge n das Element mit Index i
private static void versickere(int[] a, int n, int i) {
while (i <= n / 2) {
int ln = 2 * i; // linker Nachfolger
if (ln < n) // hat der Knoten einen rechten Nachfolger, und
{
if (a[ln + 1] > a[ln]) // ist der größer als der linke?
{
ln++; // dann benutze den rechten, sonst den linken
// Nachfolger
}
}
if (a[ln] > a[i]) {
vertausche(a, i, ln); // vertausche mit größerem Nachfolger
i = ln; // versickere weiter
} else { // beide Nachfolger sind kleiner als das Element, kann
// nicht
i = n; // weiter versickern: Beende Schleife
}
}
}
// überführt ein Array in einen Heap
public static void überführeInHeap(int[] a) {
for (int i = n / 2; i >= 1; i--) { // starte von der Mitte aus rückwärts
versickere(a, n, i);
}
}
public void display() {
for (int i = 0; i < count; i++) {
System.out.print(Heap[i]);
}
System.out.println();
}
}
Grüße
Belenus