home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pctchnqs / 1990 / number5 / bubbler.pas < prev    next >
Pascal/Delphi Source File  |  1990-09-28  |  1KB  |  71 lines

  1. PROGRAM Bubbler;
  2.  
  3. CONST
  4.   ARRAY_SIZE = 100;
  5.  
  6. TYPE
  7.   IntArray = ARRAY[0..ARRAY_SIZE] OF INTEGER;
  8.  
  9. VAR
  10.   I : Integer;
  11.   TestArray : IntArray;
  12.  
  13. PROCEDURE Swap(VAR X : Integer; VAR Y : Integer);
  14.  
  15. VAR Temp : Integer;
  16.  
  17. BEGIN
  18.   Temp := X;  { Store x's value in temp  }
  19.   X := Y;     { Copy y's value into x    }
  20.   Y := Temp;  { Copy x's value from temp into y }
  21. END;
  22.  
  23.  
  24. FUNCTION BubbleSort(VAR TargetArray : IntArray) : Integer;
  25.  
  26. VAR SortedFlag, PassFlag, I : Integer;
  27.  
  28. BEGIN
  29.   SortedFlag := 1;
  30.   REPEAT
  31.     PassFlag := 1;
  32.     FOR I := 0 TO ARRAY_SIZE DO
  33.       IF (TargetArray[I] > TargetArray[I+1]) THEN
  34.         BEGIN
  35.           Swap(TargetArray[I],TargetArray[I+1]);
  36.           SortedFlag := 0;
  37.           PassFlag   := 0;
  38.         END;
  39.   UNTIL PassFlag = 1;
  40.   BubbleSort := SortedFlag;
  41. END;
  42.  
  43.  
  44. PROCEDURE ShowArray(TargetArray : IntArray);
  45.  
  46. VAR I : Integer;
  47.  
  48. BEGIN
  49.   FOR I := 0 TO ARRAY_SIZE DO
  50.     BEGIN
  51.       Write(TargetArray[I] : 3);
  52.       IF ((I+1) MOD 20 = 0) THEN Writeln;
  53.     END;
  54.   Writeln;
  55. END;
  56.  
  57.  
  58. BEGIN
  59.   FOR I := 0 TO ARRAY_SIZE DO
  60.     TestArray[i] := Random(ARRAY_SIZE-1);
  61.   Writeln('Here''s the unsorted array: ');
  62.   ShowArray(TestArray);
  63.   IF BubbleSort(TestArray) = 1
  64.     THEN Writeln('That array was already sorted!')
  65.   ELSE
  66.     BEGIN
  67.       Writeln;
  68.       Writeln('The sort of the array is complete. Here it is:');
  69.       ShowArray(TestArray);
  70.     END;
  71. END.