home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
554
/
MAI
/
QKSORT.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-10-07
|
3KB
|
97 lines
{─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
Msg : 391 of 412
From : David Dahl 1:272/38.0 14 May 93 04:12
To : All
Subj : Quick Sort In Pascal
────────────────────────────────────────────────────────────────────────────────
Hello!
I seem to remember someone asking for a quick sort
implementation in Turbo Pascal not too long ago. Well, I was
feeling kinda bored so I whipped this up:}
{$M 32768, 0, 655360}
Program QuickSort;
(* PUBLIC DOMAIN *)
Uses CRT;
Const MaxArraySize = 3000;
Type NumberArray = Array[1..MaxArraySize] of Integer;
Procedure QuickSortArray (Var ArrayToSort : NumberArray;
NumberOfElements : Word );
Procedure QuickAux (Var WorkArray : NumberArray;
HeadIn, TailIn : Word );
Var Compare : Integer;
Head,
Tail : Word;
Begin
Head := HeadIn;
Tail := TailIn;
If Head < Tail Then
Begin
Compare := WorkArray[Head];
While Head < Tail do
Begin
While (WorkArray[Tail] > Compare) AND
(Head < Tail) do
Dec(Tail);
If Head < Tail Then
Begin
WorkArray[Head] := WorkArray[Tail];
Inc(Head);
End;
While (WorkArray[Head] < Compare) AND
(Head < Tail) do
Inc(Head);
If Head < Tail Then
Begin
WorkArray[Tail] := WorkArray[Head];
Dec (Tail);
End;
End;
WorkArray[Head] := Compare;
QuickAux (WorkArray, HeadIn, (Head-1));
QuickAux (WorkArray, (Tail+1) , TailIn);
End;
End;
Begin
QuickAux (ArrayToSort, 1, NumberOfElements);
End;
Var TestArray : NumberArray;
Count : Word;
Begin
ClrScr;
For Count := 1 to MaxArraySize do
TestArray[Count] := 32768 - Random(65535);
Writeln ('Before Sort:');
For Count := 1 to MaxArraySize do
Write (TestArray[Count]:8);
Writeln;
Writeln ('Sorting... ');
QuickSortArray (TestArray, MaxArraySize);
Writeln;
Writeln ('After Sort: ');
For Count := 1 to MaxArraySize do
Write (TestArray[Count]:8);
Writeln;
Readln
End.