Previous Up Next

3  Lineares Sortieren

Literatur: Kapitel 9 [CLR90].
Inhalt O-Notation ·Einführung ·Vergleichssortieren ·Counting sort ·Bucket sort
Einführung
Sortieren: Überblick

Verfahren Tmin Tmax Tav
Auswahl O(n2) O(n2) O(n2)
Einfügen O(n) O(n2) O(n2)
Bubblesort O(n) O(n2) O(n2)
Mischen O(n logn) O(n logn) O(nlogn)
direktes Mischen O(n logn) O(n logn) O(nlogn)
natürliches Mischen O(n) O(n logn) O(nlogn)
Quicksort O(nlogn) O(n2) O(nlogn)
Heapsort O(n logn) O(n logn) O(n logn)

Table 1: Vergleich


Abschätzung für Vergleichssortieren
Vergleichssortieren: worst-case
Theorem 1  [Untere Schranke für worst-case]   Die Höhe ein Entscheidungsbaums der n Elemente sortiert besitzt eine asymptotische untere Schranke der Größe O(n lgn).

Abschätzung der Laufzeit(2)
Beweis:[of Theorem 1]



Lineares Sortieren: Counting Sort
Counting Sort




Counting-Sort(A,B,k)
  for i := 1 to k do C[i] := 0; /* initialize */

  for j := 1 to length[A]
  do  C[A[j]] := C[A[j]] + 1  /* C[i]: Anzahl der Elemente = i */

  for i := 2 to k             /* Erlaubter Input von 1...k     */
  do  C[i] := C[i] + C[i-1];  /* C[i]: Anzahl Elemente <= i    */

  for j := length[A]  downto  1
  do
       B[C[A[j]]] :=   A[j];  /* C[A[j]] gibt Pos. in B        */
         C[A[j]]  := C[A[j]] - 1;   
  od;



Analyse von Counting Sort
  1. erste Schleife: O(k)
  2. zweite Schleife: O(n)
  3. dritte Schleife: O(n)
Bucketsort
Bucketsort (2)




BucketSort(A) 
  n := length(A);

  for i=1 to n
    do insert A[i] into list B[floor (n * A[i])];

  for i=0 to n-1
    do sort list B[i] with insertion sort;

  concatenate lists B[0], B[1], B[n-1] together;



Bucketsort: Analyse
Page last (re-)generated May 21, 2003 (Martin Steffen)
Previous Up Next