Program Algorithm; { Sorting by counting. Algorithm C on page 76 of "The Art of Computer Programming" volume 3 / "Sorting and Searching" by Donald E. Knuth } const LIMIT = 25; var n : byte; { Row to be sorted, ranking, indices: } rij, kount, terug : array[1..LIMIT] of byte; procedure TelSort; var i,j,k,L : byte; begin for k := 1 to LIMIT do kount[k] := 0; for k := 0 to (LIMIT-2) do begin i := LIMIT - k; for L := 1 to (i-1) do begin j := i - L; if rij[i] < rij[j] then kount[j] := kount[j] + 1 else kount[i] := kount[i] + 1; end; end; end; begin for n := 1 to LIMIT do rij[n] := Random(3*LIMIT)+1; for n := 1 to LIMIT do Write(rij[n],' '); Writeln; TelSort; for n := 1 to LIMIT do terug[kount[n]+1] := n; for n := 1 to LIMIT do Write(rij[terug[n]],' '); Writeln; end.