home *** CD-ROM | disk | FTP | other *** search
/ Big Blue Disk 17 / bbd17.zip / INSERT.PAS < prev    next >
Pascal/Delphi Source File  |  1987-10-09  |  978b  |  50 lines

  1. PROGRAM Sort;
  2. CONST
  3.   LSize = 40;
  4. TYPE
  5.   List = ARRAY[1..LSize] of INTEGER;
  6. VAR
  7.   AList: List;
  8.   Count: INTEGER;
  9.  
  10. PROCEDURE Insert(
  11.   VAR L  { List to be sorted }
  12.     :List;
  13.   N      { No. of items to be sorted }
  14.     :INTEGER
  15.    );
  16.  
  17. VAR
  18.   StageNo, Loc : INTEGER;
  19.   StageOver: BOOLEAN;
  20.  
  21. PROCEDURE Swap( VAR X, Y : INTEGER );
  22. VAR Temp:INTEGER;
  23. BEGIN
  24.   Temp := X;
  25.   X := Y;
  26.   Y := Temp
  27. END;
  28.  
  29. BEGIN              { Insert }
  30.   FOR StageNo := 1 TO N-1 DO
  31.     BEGIN
  32.       StageOver := False;
  33.       Loc := StageNo+1;
  34.       WHILE (Loc>1) AND NOT StageOver DO
  35.         BEGIN
  36.           IF L[Loc] < L[Loc-1]
  37.             THEN Swap( L[Loc],L[Loc-1] )
  38.             ELSE StageOver := True;
  39.           Loc := Loc - 1
  40.         END
  41.     END
  42. END;              { Insert }
  43.  
  44. BEGIN              { Try }
  45.   FOR Count := 1 TO LSize DO
  46.     AList[Count] := TRUNC(RANDOM*900);
  47.   Insert( AList, LSize );
  48.   FOR Count := 1 TO LSize DO
  49.     Write( AList[Count]:4 )
  50. END.