2 Stimmen

Ändern eines maxHeap-Sorts in einen minHeap-Sort

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.

1voto

allingeek Punkte 1380

Der einzige Unterschied zwischen einem Min- und einem Max-Heap besteht im Vergleicher. Wenn Sie eine funktionierende Max-Heap-Struktur haben, müssen Sie nur den Vergleicher umdrehen.

Schauen Sie sich Einführung in die Algorithmen auf Amazon an. Die Max-Heap-Struktur wird ausführlich beschrieben und ist in der Vorschau oder der Funktion "Blick ins Buch" verfügbar.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X