Ich habe eine Frage zu Heap-Sortierung. Es steht in einem Algorithmus Buch, dass A.heap-size<= A.length
ich den Unterschied zwischen den beiden nicht verstehe. Wenn ein Array einen Heap darstellt, warum besteht die Möglichkeit, dass A.heap-size
kleiner als A.length
ist. Ich weiß, dass A.heap-size
die Anzahl der Elemente innerhalb eines Heap darstellt, also warum ist es nicht vollständig nur gleich der Anzahl der Elemente in einem Array?Was ist der Unterschied zwischen A. length und A.heap-size?
Antwort
Die Invariante der Heap-Sortierung besteht darin, dass die ersten k Elemente des n-Element-Arrays ein Heap auf den k kleinsten Elementen sind und die letzten n-k Elemente die n - k größten Elemente in sortierter Reihenfolge sind. Die letzteren Elemente sind der Grund, warum der Heap nicht das gesamte Array belegt.
könnten Sie genauer sein? Ich konnte den Unterschied nicht verstehen – caesar
Nur um eine Antwort zu erweitern. Lesen Sie weiter dieses Buch.
A.heap_size
eines Arrays, ist dieser Ort, wo Heap (max_heap oder min_heap) Strukturelemente platziert werden. Dies ist sinnvoll im Hinblick auf Sortierung oder Warteschlangen. Sie haben Recht: Dies ist die Anzahl der Elemente in einem Heap, aber es ist gleich A.length
nur bei erste Iteration von Heap-Sortierung.
Am nächsten Iteration nach Wurzel des max_heap Baumes (A[1]
) mit A[i] = A[A.length]
(letztem Elemente in Array A) auszutauschen, das A[1]
Element wird das letzte Element der A sein und A.heap_sort
Wert wird um 1 und max_heap verringert wird Struktur sollte max_heapified sein: A[Parent(i)] >= A[i]
, wobei Parent(i)
i/2 des Heap-Baums zurückgibt.
a.length die Gesamtangesichts der, die in nicht von Elementen nicht von Elementen des Arrays während A.heap Größe gibt sortierte Reihenfolge oder keine der Elemente, die der Heap-Eigenschaft folgen ........ Und A.length-A.Heap-Size oder sogar nicht sortiert auch jetzt und muss in Zukunft sortieren.
- 1. Was ist der Unterschied zwischen .lib und .a Dateien?
- 2. Was ist der Unterschied zwischen .so und .a Dateien?
- 3. Was ist der Unterschied zwischen .o .a und .so Dateien?
- 4. Was ist der Unterschied zwischen $ a und $$ in PHP?
- 5. Was ist der Unterschied zwischen „$ a“ und ein in Unix $
- 6. Apache logs - was ist der Unterschied zwischen% a und% h?
- 7. Was ist der Unterschied zwischen auto a = A (3) und A a (3)?
- 8. Was ist der Unterschied zwischen double a = a + int b und int a + = double b?
- 9. Was ist der Unterschied zwischen `==` und `ist`?
- 10. Was ist der Unterschied zwischen .Equals und ==
- 11. Was ist der Unterschied zwischen "a ist b" und "id (a) == id (b)" in Python?
- 12. Was ist der Unterschied zwischen a [0] und & a [0] in der Zeichenkette
- 13. Was ist der Unterschied zwischen der Definition von char a [5] und char (* a) [5]?
- 14. Unterschied zwischen 'a == null' und 'null == a'
- 15. Was ist der Unterschied zwischen:.! und: r !?
- 16. Was ist der Unterschied zwischen Difftime und '-'?
- 17. Was ist der Unterschied zwischen $ und $$?
- 18. Was ist der Unterschied zwischen Verilog! und ~?
- 19. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 20. Was ist der Unterschied zwischen/* ... */und/** ... */
- 21. Was ist der Unterschied zwischen `&` und `ref`?
- 22. Was ist der Unterschied zwischen $ (...) und `...`
- 23. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 24. Was ist der Unterschied zwischen + = und = +?
- 25. Was ist der Unterschied zwischen? und ? = Nil
- 26. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 27. Was ist der Unterschied zwischen "int * a = new int" und "int * a = new int()"?
- 28. Was ist der Unterschied zwischen "Freund Struct A;" und "Freund A;" Syntax?
- 29. Was ist der Unterschied zwischen a (i, :) und [a] in Matlab?
- 30. Was ist der Unterschied zwischen '(a b c) und (Liste' a 'b' c)?
Es klingt, als ob die Implementierung der Heap-Sortierung in Ihrem Buch den ersten "Abschnitt" des Arrays für den Heap und den zweiten "Abschnitt" des Arrays für die sortierten Elemente verwendet. Der Heap beginnt mit 'A.length'-Elementen, aber wenn Sie das max-Element entfernen, wird der Heap verkleinert. – rliu