Warum ist Heapsort nicht stabil?
Ich versuche zu verstehen, warum heapsort ist nicht stabil.
Ich habe gegoogelt, aber habe nicht gefunden eine gute, intuitive Erklärung.
Verstehe ich die Bedeutung von stabilen Sortieren - es erlaubt uns zu Sortieren, basierend auf mehr als einen Schlüssel, die kann sehr nützlich sein (D. H., mehrere Sortierungen, die jeweils basierend auf einer anderen Taste. Da jede Art unter Beibehaltung der relativen Ordnung der Elemente, Vorherige Sortierungen können bis zu geben, eine endgültige Liste von Elementen sortiert nach mehreren Kriterien).
Jedoch, warum würden Sie nicht heapsort erhalten diese als gut?
Vielen Dank für Ihre Hilfe!
InformationsquelleAutor der Frage JMS | 2013-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die endgültige Sequenz der Ergebnisse von heapsort kommt von entfernen von Elementen aus dem heap erstellt in rein Größe, um (basierend auf dem Schlüssel-Feld).
Alle Informationen über die Reihenfolge der Elemente in der original-Reihenfolge wurde verloren, während der heap creation Phase, welche kam zuerst.
InformationsquelleAutor der Antwort Baldrick
Heap-sort instabilen Beispiel
Berücksichtigen array
21 20a 20b 12 11 8 7
(schon in max-heap-format)hier
20a = 20b
nur zur Unterscheidung der Bestellung stellen wir Ihnen als20a
und20b
Während heapsort ersten
21
entfernt und gelegt in den letzten index dann20a
entfernt platziert und in der letzten, aber einem index und20b
im letzten aber zwei index-also nach heap sort das array sieht aus wie7 8 11 12 20b 20a 21
.Bewahrt jedoch nicht die Reihenfolge der Elemente und damit nicht stabil
InformationsquelleAutor der Antwort KD157
Stabil bedeutet, wenn die zwei Elemente haben den gleichen Schlüssel, Sie bleiben in der gleichen Reihenfolge oder Positionen. Aber das ist nicht der Fall für Heap-Sortieren.
Heapsort ist nicht stabil, weil die Operationen auf dem heap ändern kann die relative Reihenfolge gleicher Elemente.
Vom hier:
InformationsquelleAutor der Antwort Rahul Tripathi
Angenommen, eine Matrix der Größe n (willkürlicher Wert) und wenn gibt es zwei aufeinander folgende Elemente(angenommen 15) im heap, und wenn Ihre Eltern Indizes haben Werte wie 4 und 20.(dies ist die tatsächliche Reihenfolge (....4,20 ,.....,15,15.....). die relative Reihenfolge von 4 und 1. 15 bleibt aber gleich 20>15,2. 15 kommt nach vorne(swap), wie definiert in den heap-sort-Algorithmus, die relative Reihenfolge ist Weg.
InformationsquelleAutor der Antwort Karthik Priyatham
Ich weiß, das ist eine späte Antwort, aber ich will hinzufügen, meine 2 cents hier.
Betrachten wir ein einfaches array mit 3 Integer-zahlen. 2,2,2 wenn man nun die build-max-heap build-max-heap-Funktion, werden Sie feststellen, dass die array-Speicherung der Eingang hat sich nicht geändert, wie es bereits in Max-heap-form. Nun, wenn wir die Wurzel des Baums am Ende der Reihe in der ersten iteration die heap-sort die Stabilität der array ist schon Weg. So dort haben Sie ein einfaches Beispiel für die Instabilität von heap-sort.
InformationsquelleAutor der Antwort dipen bhatt