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
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Merge Insertion – Wikipedia
Merge Insertion – Wikipedia
aus Wikipedia, der freien Enzyklopädie
QS-Informatik
Beteilige dich an der Diskussion!
Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+)

Merge Insertion (auch bekannt als Ford-Johnson-Algorithmus) ist in der Informatik ein rekursives, vergleichsorientiertes Sortierverfahren, das mit weniger Vergleichen als Mergesort auskommt.

Idee des Algorithmus

[Bearbeiten | Quelltext bearbeiten]

Der tatsächliche Aufbau des Algorithmus ist schwer zu verstehen. Deshalb soll an dieser Stelle die Idee von Merge Insertion kurz erläutert werden.

Mergesort benötigt immer die gleiche Anzahl Vergleiche abhängig von der Eingabelänge n {\displaystyle n} {\displaystyle n}, egal ob n {\displaystyle n} {\displaystyle n} eine Zweierpotenz ist oder nicht. Diese Tatsache macht sich Merge Insertion zu Nutze und schafft es deshalb, mit weniger Vergleichen als Mergesort auszukommen. Die Idee ist, die Eingabe bei der Rekursion nicht in möglichst gleich große Teillisten aufzuspalten, sondern immer die nächstgrößere Zweierpotenz zu bearbeiten. Dadurch benötigt Merge Insertion im Vergleich zur informationstheoretischen unteren Schranke S ( n ) ≥ ⌈ log 2 ⁡ n ! ⌉ {\displaystyle S(n)\geq \lceil \log _{2}n!\rceil } {\displaystyle S(n)\geq \lceil \log _{2}n!\rceil } nur eine sehr geringe Anzahl Vergleiche mehr, als theoretisch notwendig.

Laufzeit

[Bearbeiten | Quelltext bearbeiten]

Merge Insertion hat im Best-, Average- und Worst-Case eine O ( n ⋅ log ⁡ ( n ) ) {\displaystyle {\mathcal {O}}(n\cdot \log(n))} {\displaystyle {\mathcal {O}}(n\cdot \log(n))}-Komplexität.[1][2]

Algorithmus als Pseudocode

[Bearbeiten | Quelltext bearbeiten]

procedure MergeInsertion( S 1 , . . . , S n {\displaystyle S_{1}{,}...{,}S_{n}} {\displaystyle S_{1}{,}...{,}S_{n}}):

 1. Sortiere die Eingabe 
  
    
      
        
          S
          
            1
          
        
        
          ,
        
        .
        .
        .
        
          ,
        
        
          S
          
            n
          
        
      
    
    {\displaystyle S_{1}{,}...{,}S_{n}}
  
{\displaystyle S_{1}{,}...{,}S_{n}} mit je einem Vergleich in 
  
    
      
        ⌊
        n
        
          /
        
        2
        ⌋
      
    
    {\displaystyle \lfloor n/2\rfloor }
  
{\displaystyle \lfloor n/2\rfloor } disjunkte Paare.
    Ergebnis: 
  
    
      
        
          b
          
            i
          
        
        
          <
        
        
          a
          
            i
          
        
      
    
    {\displaystyle b_{i}{<}a_{i}}
  
{\displaystyle b_{i}{<}a_{i}} mit 
  
    
      
        i
        =
        1
        
          ,
        
        .
        .
        .
        
          ,
        
        ⌊
        n
        
          /
        
        2
        ⌋
      
    
    {\displaystyle i=1{,}...{,}\lfloor n/2\rfloor }
  
{\displaystyle i=1{,}...{,}\lfloor n/2\rfloor }
 2. Sortiere die größeren Elemente 
  
    
      
        
          a
          
            1
          
        
        
          ,
        
        .
        .
        .
        
          ,
        
        
          a
          
            ⌊
            n
            
              /
            
            2
            ⌋
          
        
      
    
    {\displaystyle a_{1}{,}...{,}a_{\lfloor n/2\rfloor }}
  
{\displaystyle a_{1}{,}...{,}a_{\lfloor n/2\rfloor }} rekursiv mit MergeInsertion.
 3. Nenne das Ergebnis aus Schritt 2 die Hauptkette: 
  
    
      
        
          b
          
            1
          
        
        
          <
        
        
          a
          
            1
          
        
        
          <
        
        
          a
          
            2
          
        
        .
        .
        .
        
          <
        
        
          a
          
            ⌊
            n
            
              /
            
            2
            ⌋
          
        
      
    
    {\displaystyle b_{1}{<}a_{1}{<}a_{2}...{<}a_{\lfloor n/2\rfloor }}
  
{\displaystyle b_{1}{<}a_{1}{<}a_{2}...{<}a_{\lfloor n/2\rfloor }}
    Füge nun die restlichen Elemente 
  
    
      
        
          b
          
            2
          
        
        
          ,
        
        .
        .
        .
        
          ,
        
        
          b
          
            ⌈
            n
            
              /
            
            2
            ⌉
          
        
      
    
    {\displaystyle b_{2}{,}...{,}b_{\lceil n/2\rceil }}
  
{\displaystyle b_{2}{,}...{,}b_{\lceil n/2\rceil }} durch Binäres Einfügen in der Reihenfolge 
    
  
    
      
        
          b
          
            3
          
        
        ,
        
          b
          
            2
          
        
        ,
        
          b
          
            5
          
        
        ,
        
          b
          
            4
          
        
        ,
        
          b
          
            11
          
        
        ,
        
          b
          
            10
          
        
        ,
        
          b
          
            9
          
        
        ,
        
          b
          
            8
          
        
        ,
        
          b
          
            7
          
        
        ,
        
          b
          
            6
          
        
        ,
        .
        .
        .
      
    
    {\displaystyle b_{3},b_{2},b_{5},b_{4},b_{11},b_{10},b_{9},b_{8},b_{7},b_{6},...}
  
{\displaystyle b_{3},b_{2},b_{5},b_{4},b_{11},b_{10},b_{9},b_{8},b_{7},b_{6},...} in die Hauptkette ein.

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • Donald E. Knuth: Sorting and Searching/The Art of Computer Programming. Addison-Wesley Longman, 2. Auflage, 2003, ISBN 0201896850

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Wikipediaseite zu Sortierverfahren
  2. ↑ Florian Stober, Armin Weiß: On the Average Case of MergeInsertion. Abgerufen am 20. Januar 2022. 
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Merge_Insertion&oldid=233565107“
Kategorie:
  • Sortieralgorithmus
Versteckte Kategorie:
  • Wikipedia:Qualitätssicherung Informatik

  • 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