home *** CD-ROM | disk | FTP | other *** search
- PROCEDURE Shellsort(VAR A : ScalarTyp;
- n : INDEX);
- {
- The array A[1..n] is sorted in ascending order. The method is that
- of D.A. Shell, (A high-speed sorting procedure, Comm. ACM 2 (1959),
- 30-32) with subsequences chosen as suggested by T.N. Hibberd.
- }
- VAR
- i, j, k, m : integer;
- done : BOOLEAN;
- temp : SCALAR;
- begin (*$C-,M-,F-*)
- m := n;
- While m <> 0 do
- begin
- m := m DIV 2;
- k := n - m;
- for j:=1 to k do
- begin
- i := j;
- done := FALSE;
- repeat
- if A[i+m] >= A[i] then
- done := TRUE
- else
- begin
- temp := A[i]; A[i] := A[i+m]; A[i+m] := temp;
- i := i - m;
- end;
- until (i<1) OR ( done );
- end{for j};
- end{While};
- end;{Shellsort}{$C+,M+,F+}
-
-