Copyright (c) 2004-2010 Stefan K. Baur
Home meiner Webpräsenz
Startseite
Das Menü auf einem Blick!
Sitemap
Downloads vorliegender WebSite
Downloads
Hilfeseite vorliegender Homepage
Hilfe
Erscheinungsvermerk vorliegender Homepage
Impressum
Sortieralgorithmus: InsertionSort InsertionSort
SelectionSort
(Sortieralgorithmus: SelectionSort) Sortieren
(Sortieralgorithmen) SlowSort
(Sortieralgorithmus: SlowSort) Gehe nach unten!
 Einführung   Implementierung   Highlight 
Ein recht ineffizienter Sortieralgorithmus ist der InsertionSort!
Einführung

Definition

Der InsertionSort ist das duale Gegenstück zum Sortieralgorithmus: SelectionSort SelectionSort. Es wird zwar auch in ein Element und den Rest zerlegt, aber jetzt wird die ganze Arbeit nicht in die Zerlegung, sondern in die Komposition gesteckt. Man nimmt das erste Element der Liste weg, sortiert rekursiv die Restliste und fügt dann das erste Element an der passenden Stelle ein. Funktionale Programmierung (Buch) [FUNPROG]

Komplexität

Der Aufwand ist hier quadratisch, weil das Einsortieren im Schnitt die halbe Liste abarbeiten muss, bis die richtige Stelle gefunden ist. Funktionale Programmierung (Buch) [FUNPROG]

Beispiel: Sortieren von Spielkarten

Der Spieler nimmt eine Karte nach der anderen auf und sortiert sie in die bereits aufgenommenen Karten ein. Dieser Algorithmus wird InsertionSort genannt. Einführung in die Informatik (Buch) [INFO2002]

Konkretes Zahlenbeispiel

Dabei sei nun [8,2,5,3,9,1,6,7,4] die zu sortierende Liste:
  • [8,2,5,3,9,1,6,7,4][]
  • [2,5,3,9,1,6,7,4][8]
  • [5,3,9,1,6,7,4][2,8]
  • [3,9,1,6,7,4][2,5,8]
  • [9,1,6,7,4][2,3,5,8]
  • [1,6,7,4][2,3,5,8,9]
  • [6,7,4][1,2,3,5,8,9]
  • [7,4][1,2,3,5,6,8,9]
  • [4][1,2,3,5,6,7,8,9]
  • [][1,2,3,4,5,6,7,8,9]
Implementierung
Implementierung mit SML
(* insertionsort: klar!
   insert: Hilfsfunktion *)

fun insertionsort nil = nil
  | insertionsort (e::el) =
      let
        fun insert a nil = [a]
          | insert a (x::xl) =
              if (<= x)
                then a :: (:: xl)
                else x :: (insert a xl)
      in
        insert e (insertionsort el)
      end;

(* Anwendungsbeispiel *)

val output1 = insertionsort [3, 6, 2, 9, 1, 8, 7, 4, 5];
val output2 = insertionsort [7, 7, 7, 2, 7, 2, 2, 2];
val output3 = insertionsort [~3, 3, ~2, 2];

(* Ausgabe:
   val output1 = [1,2,3,4,5,6,7,8,9] : int list
   val output2 = [2,2,2,2,7,7,7,7] : int list
   val output3 = [~3,~2,2,3] : int list *)
Implementierung mit Delphi
unit UInsertionsort;

interface

procedure InsertionSort(var A: array of Integer);

implementation

procedure InsertionSort(var A: array of Integer);
var
  I, J: Integer;
  Elem: Integer;
begin
  for I := Low(A) + 1 to High(A) do
    if (A[I] < A[- 1]) then
    begin
      Elem := A[I];
      J := I;
      while ((> Low(A)) and (A[- 1] > Elem)) do
      begin
        A[J] := A[- 1];
        Dec(J);
      end;
      A[J] := Elem;
    end;
end;

end.
Implementierung mit Prolog
% ?-insertionsort([8, 2, 5, 3, 9, 1, 6, 7, 4], SL).

insertionsort([], []).
insertionsort([X|L], SL) :- insertionsort(L, ZSL), insert_(X, ZSL, SL).

insert_(X, [Y|SL1], [Y|SL2]) :- X > Y, !, insert_(X, SL1, SL2).
insert_(X, SL, [X|SL]).
Highlight

Sie setzen matt!

Haben Sie beim Schach schon einmal mit dem Der König erstickt! Stickmatt
Weiß setzt matt in 1
               
               
               
               
               
               
               
               
konstruiert
… punkten können?
Der König erstickt! Mehr ...
 Seiten - Information
Gehe nach oben!
 Allgemein   Literaturangaben   Siehe auch ...   Look & Feel 
Allgemein
InsertionSort InsertionSort
Kurzbeschreibung : Sortieralgorithmus: InsertionSort
Beschreibung : Ein recht ineffizienter Sortieralgorithmus ist der InsertionSort!
 
Letzte Änderung dieser Seite : Sonntag, den 15. März 2009
Generierungszeitpunkt dieser Seite : Donnerstag, den 9. September 2010 um 13:47 Uhr
Verfasser dieser Seite : Stefan K. Baur
 
Domäne : www.stefan-baur.de
 
Pfad : Home meiner Webpräsenz Startseite » Die Wissenschaft der Zukunft Informatik » Problemlösungsverfahren Algorithmen » Sortieralgorithmen Sortieren » Sortieralgorithmus: InsertionSort InsertionSort
 
Untermenü :
Sortieralgorithmus: ShellSort ShellSort
 
Printversion :
Sortieralgorithmus: InsertionSort InsertionSort
Literaturangaben
 
Buchinformation bei Amazon.de  [FUNPROG] 
Titel :Funktionale Programmierung
Autor :Prof. Dr. Peter Pepper (TU Berlin)
Herausgeber :Springer-Verlag
Herausgabejahr :1999
ISBN :ISBN 3-540-64541-1
 In OPAL, ML, HASKELL und GOFER mit 34 Abbildungen
 
Buchinformation bei Amazon.de  [INFO2002] 
Titel :Einführung in die Informatik
Autoren :Heinz-Peter Gumm, Manfred Sommer
Herausgeber :Oldenbourg Verlag
Herausgabejahr :2002
Auflage :5
ISBN :ISBN 3-486-25635-1
Alle literarischen Quellen auf einem Blick! Literaturverzeichnis
Siehe auch ...
  1. Sortieralgorithmus: ShellSort ShellSort
    Ein verbesserter InsertionSort, aber immer noch recht ineffizient, ist der ShellSort!
Look & Feel
Aktuelles Design :
  1. Design 2004
Alternative Designs :
  1. Sortieralgorithmus: InsertionSort Design 2010
  2. Sortieralgorithmus: InsertionSort Design 2009
  3. Sortieralgorithmus: InsertionSort Design 2008
  4. Sortieralgorithmus: InsertionSort Design 2007
  5. Sortieralgorithmus: InsertionSort Design 2006
  6. Sortieralgorithmus: InsertionSort Design 2005