Sortierprozedur

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

DistributionCounting.om
PROCEDURE Sort(VAR items: Items; min, max: INTEGER;
               nofitems: INTEGER);
   VAR
      myitems: Items; (* local copy of items *)
      count: ARRAY maxintervallen OF INTEGER;
      i, j: INTEGER; (* indices of items and myitems *)
BEGIN
   (* D1 *)
   i := 0;
   WHILE i < max - min + 1 DO
      count[i] := 0; INC(i);
   END;
   (* make local copy of items *)
   myitems := items;
   (* D2/D3 *)
   i := 0;
   WHILE i < nofitems DO
      INC(count[myitems[i] - min]); INC(i);
   END;
   (* D4 *)
   i := 1;
   WHILE i < max - min + 1 DO
      INC(count[i], count[i-1]); INC(i);
   END;
   (* D5/D6 *)
   j := nofitems-1;
   WHILE j >= 0 DO
      i := count[myitems[j] - min];
      items[i-1] := myitems[j];
      DEC(count[myitems[j] - min]);
      DEC(j);
   END;
END Sort;

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005