Previous Contents 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 log n) O(n log n) O(nlog n)
direktes Mischen O(n log n) O(n log n) O(nlog n)
natürliches Mischen O(n) O(n log n) O(nlog n)
Quicksort O(nlog n) O(n2) O(nlog n)
Heapsort O(n log n) O(n log n) O(n log n)

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 lg n).

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;

  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
February 5, 2002
Previous Contents Next