Es fällt mir schwer, herauszufinden, wie ich einen Max-Heap in einen Min-Heap umwandeln kann. Ich habe derzeit einen Max-Heap-Algorithmus am Laufen, würde aber gerne wissen, wie ich ihn ändern kann. Das ist der Max-Heap, den ich verwendet habe:
public static int [][] fixheap(int heap[][], int n, int i){
int j=2*i;
int weight = heap[i][0];
while (j<=n){
if((j= heap[j][0]) break;
else
heap[j/2][0] = heap[j][0];
j=j*2;
}
heap[j/2][0]= data;
return heap;
}
public static void makeheap(int heap[][], int n){
for (int i=n/2; i>=0; i--){
fixheap(heap, n ,i);
}
}
Ich habe versucht, bestimmte Zeichen umzukehren, die relevant zu sein scheinen, allerdings habe ich den Min-Heap nicht gefunden. Jede Hilfe wäre toll, danke.