home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
turbo4
/
qsort.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1987-12-08
|
2KB
|
68 lines
{ 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.