Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Treesort – Wikipedia
Treesort – Wikipedia 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie

Treesort ist ein Sortieralgorithmus, der 1962 vom Informatiker Robert Floyd vorgestellt wurde und einer der Vorgänger des Algorithmus Heapsort ist.[1][2]

Prinzip

[Bearbeiten | Quelltext bearbeiten]

Treesort erhält ein Eingabe-Array von Elementen und gibt sie in einem Ausgabe-Array in aufsteigender Reihenfolge gemäß ihrer totalen Ordnungsrelation („≤“) aus. Dafür wird ein Zwischenspeicher der doppelten Größe der Eingabe erstellt, wovon die zweite Hälfte zunächst mit der unsortierten Eingabe befüllt wird. Fasst man das ganze Array als Binärbaum auf, so stellt die hintere Hälfte die Einträge für die Blattknoten dar. Die vordere Hälfte sind die Elternknoten, in die nun in mehreren Durchläufen jeweils der kleinere Wert der beiden Kindsknoten eingetragen wird. Zusätzlich zum Sortierschlüssel wird auch die Position innerhalb der Blattknoten gespeichert. Am Ende eines Durchlaufs wird an der im Wurzelknoten gespeicherten Position der passende Blattknoten durch den Wert unendlich ersetzt. Somit steht nach jedem Durchlauf im Wurzelknoten der niedrigste Wert der Einträge im Binärbaum, der dann ins Ausgabe-Array kopiert wird.

Der Algorithmus verfügt über eine optimale Laufzeit von O ( n log ⁡ n ) {\displaystyle {O}(n\log n)} {\displaystyle {O}(n\log n)} unter Verwendung von O ( n ) {\displaystyle {O}(n)} {\displaystyle {O}(n)} zusätzlichem Speicher.

Pseudocode

[Bearbeiten | Quelltext bearbeiten]

Der folgende Code beschreibt den Algorithmus nach Floyd, der die kleinsten k Elemente des n-elementigen Arrays Unsortiert in das k-elementige Array Sortiert schreibt. In den Zwischenspeicher m wird zu Beginn mit der Funktion packe (wert, position) ein Wert zusammen mit seiner Position geschrieben. Mithilfe der Funktionen linkeHälfte und rechteHälfte werden die beiden Werte wieder ausgelesen. Die Funktion minimum (x,y) liefert das Minimum der beiden Zahlen x und y.

 Prozedur Treesort(Unsortiert, n, Sortiert, k)
   m := Array mit Index 1 bis 2n - 1
   für i:= 1 bis n
     m[n+i-1] := packe(Unsortiert[i-1], n+i-1)
   für i:=n-1 bis 1
     m[i] := minimum(m[2i], m[2i+1])
   für j:=1 bis k
     Sortiert[j] := linkeHälfte(m[1])
     i := rechteHälfte(m[1])
     m[i] := 
  
    
      
        ∞
      
    
    {\displaystyle \infty }
  
{\displaystyle \infty }
     für i := 
  
    
      
        ⌊
        i
        ÷
        2
        ⌋
      
    
    {\displaystyle \lfloor i\div 2\rfloor }
  
{\displaystyle \lfloor i\div 2\rfloor } solange i > 0
       m[i] := minimum(m[2i], m[2i+1])

Beispiel

[Bearbeiten | Quelltext bearbeiten]

Das Eingabe-Array (7, 5, 13, 11, 2, 3) wird von Treesort zunächst in den Zwischenspeicher mitsamt Position gespeichert. Damit hat das Array m elf Elemente und an den Positionen 6 bis 11 stehen die folgenden Einträge:

  • in m[6] steht (7,6)
  • in m[7] steht (5,7)
  • in m[8] steht (13,8)
  • in m[9] steht (11,9)
  • in m[10] steht (2,10)
  • in m[11] steht (3,11)

Dieser Zustand ist im ersten Bild als Binärbaum dargestellt. Anschließend werden die inneren Knoten von den Blättern zur Wurzel gefüllt und dabei das kleinste Element im Baum ermittelt, also (2,10). Somit wird 2 als erstes Element in das Ausgabe-Array eingetragen und m[10] wird auf ∞ {\displaystyle \infty } {\displaystyle \infty } gesetzt (zweites Bild). Für k=6 wird in fünf weiteren Schleifendurchläufen nun jeweils das verbleibende kleinste Element ermittelt und ins Ausgabe-Array übertragen.

  • Initialisierung
    Initialisierung
  • Ermitteln des kleinsten Elements
    Ermitteln des kleinsten Elements
  • Schleife: Ermitteln der übrigen kleinsten Elemente
    Schleife: Ermitteln der übrigen kleinsten Elemente
  • Letzter Schritt
    Letzter Schritt

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ U.S. National Institute of Standards and Technology – treesort/2 xlinux.nist.gov – abgerufen am 12. März 2013
  2. ↑ Robert W. Floyd: Algorithm 113: Treesort. In: Communications of the ACM. Band 5, Nr. 8, August 1962, S. 434 (Online [PDF; 725 kB]). 
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Treesort&oldid=213641446“
Kategorie:
  • Sortieralgorithmus

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id