home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- program qsort;
- {$R- Bereichs-Überprüfung aus | | }
- {$S- Stack-Prüfung aus | Erhöhung der Geschwindigkeit | }
- uses Crt;
-
- { Eine Implementation des Quicksort-Algorithmus, der die zur Zeit
- wohl effizienteste Methode zum Sortieren von Array-Elementen
- (im Hauptspeicher des Computers) darstellt.
- Das Programm erzeugt 1000 Zufallszahlen im Bereich von 0..29999,
- speichert sie in einem Array und sortiert sie in aufsteigender
- Reihenfolge.
- }
-
- const
- max = 1000;
-
- type
- list = array[1..max] of integer;
-
- var
- data: list;
- i: integer;
-
- { Die Prozedur QuickSort sortiert die Elemente des als A übergebenen
- Arrays (Indices von LO bis HI, inklusive). QuickSort selbst stellt nur
- eine Art Schnittstelle zum Programm dar - der tatsächliche Sortier-
- prozeß wird von der Prozedur Sort ausgeführt, die sich selbst rekursiv
- aufruft.
- }
-
- procedure quicksort(var a: list; Lo,Hi: integer);
-
- procedure sort(l,r: integer);
- var
- i,j,x,y: integer;
- begin
- i:=l; j:=r; x:=a[(l+r) DIV 2];
- repeat
- while a[i]<x do i:=i+1;
- while x<a[j] do j:=j-1;
- if i<=j then
- begin
- y:=a[i]; a[i]:=a[j]; a[j]:=y;
- i:=i+1; j:=j-1;
- end;
- until i>j;
- if l<j then sort(l,j);
- if i<r then sort(i,r);
- end;
-
- begin {quicksort};
- sort(Lo,Hi);
- end;
-
- begin { Hauptprogramm }
- Write('1000 Zufallszahlen werden erzeugt...');
- Randomize;
- for i:=1 to max do data[i]:=Random(30000);
- Writeln;
- Write('Die Zufallszahlen werden sortiert....');
- quicksort(data,1,max);
- Write('Fertig. Weiter mit RETURN: '); Readln;
- for i:=1 to 1000 do Write(data[i]:8);
- end.