blob: cf0dbd6b4a246718fff70f55a3def8fa9248d542 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
GENERIC MODULE Sorting(Elem);
PROCEDURE Swap(VAR A,B:Elem.T) =
VAR Temp:Elem.T := A;
BEGIN
A := B;
B := Temp
END Swap;
PROCEDURE QuickSort(VAR A:ARRAY OF Elem.T;Left,Right:INTEGER) =
VAR
I,J:INTEGER;
Pivot:Elem.T;
BEGIN
I := Left; J := Right;
Pivot := A[(Left+Right) DIV 2];
REPEAT
WHILE Elem.Compare(Pivot,A[I]) > 0 DO INC(I) END;
WHILE Elem.Compare(Pivot,A[J]) < 0 DO DEC(J) END;
IF I <= J THEN
Swap(A[I],A[J]);
INC(I); DEC(J)
END;
UNTIL I > J;
IF Left < J THEN QuickSort(A,Left,J) END;
IF I < Right THEN QuickSort(A,I,Right) END
END QuickSort;
BEGIN
END Sorting.
|