home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 09 / titel / bubble.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-08-03  |  2.4 KB  |  116 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      BUBBLE.PAS                        *)
  3. (*                 Bubblesort-Benchmark                   *)
  4. (*             (C) 1990 Gerald Arend & TOOLBOX            *)
  5. (* ------------------------------------------------------ *)
  6. {$A+,B-,D-,E-,F-,I-,L-,N-,O-,R-,S-,V-}
  7. PROGRAM Bubbles;
  8.  
  9. USES Dos, Crt;
  10.  
  11. CONST
  12.   Max = 20*24-1;
  13.   OrigPC = 213.5;    { Geschwindigkeit des Original IBM-PC }
  14.  
  15. VAR
  16.   X: ARRAY[0..Max] OF WORD;
  17.   n: WORD;
  18.   StartZeit, EndZeit, Zeit: LONGINT;
  19.   Sec: REAL;
  20.  
  21. PROCEDURE StartTimer;
  22. VAR
  23.   R: Registers;
  24. BEGIN
  25.   R.AH:=$00;
  26.   Intr($1A, R);
  27.   StartZeit:=R.CX SHL 16+R.DX;
  28. END;
  29.  
  30. PROCEDURE GetTimer;
  31. VAR
  32.   R: Registers;
  33. BEGIN
  34.   R.AH:=$00;
  35.   Intr($1A, R);
  36.   EndZeit:=R.CX SHL 16+R.DX;
  37.   Zeit:=EndZeit-StartZeit;
  38.   Sec:=Zeit/18.2;
  39. END;
  40.  
  41. PROCEDURE Init;
  42. BEGIN
  43.   TextColor(LightGray);
  44.   TextBackground(Black);
  45.   FOR n:=0 TO Max DO
  46.   BEGIN
  47.     X[n]:=Random(1000);
  48.     GotoXY(n MOD 20*4+1, Succ(n DIV 20));
  49.     Write(X[n]:4);
  50.   END;
  51. END;
  52.  
  53. PROCEDURE Sort;
  54. VAR
  55.   a, b, xch: WORD;
  56. BEGIN
  57.   FOR a:=0 TO Pred(Max) DO
  58.   BEGIN
  59.     GetTimer;
  60.     TextColor(White);
  61.     TextBackground(Blue);
  62.     GotoXY(41,25);
  63.     Write(Sec:5:1);
  64.     TextBackground(Black);
  65.     FOR b:=Succ(a) TO Max DO
  66.     BEGIN
  67.       IF X[a]>X[b] THEN
  68.       BEGIN
  69.         TextColor(1+a MOD 15);
  70.         xch:=X[a];
  71.         X[a]:=X[b];
  72.         X[b]:=xch;
  73.         GotoXY(a MOD 20*4+1, Succ(a DIV 20));
  74.         Write(X[a]:4);
  75.         GotoXY(b MOD 20*4+1, Succ(b DIV 20));
  76.         Write(X[b]:4);
  77.       END
  78.       ELSE
  79.         Sound(880);
  80.       NoSound;
  81.     END;
  82.   END;
  83. END;
  84.  
  85. BEGIN
  86.   DirectVideo:=TRUE;
  87.   TextMode(CO80);
  88.   ClrScr;
  89.   TextColor(White);
  90.   TextBackground(Blue);
  91.   RandSeed:=13011966;
  92.   GotoXY(1,25);
  93.   Write('toolbox - Bubblesort-Benchmark -> Start mit <ENTER>');
  94.   ClrEol;
  95.   REPEAT
  96.   UNTIL ReadKey=#13;
  97.   GotoXY(32,25);
  98.   Write('läuft  - ---.- Sekunden');
  99.   ClrEol;
  100.   StartTimer;
  101.   Init;
  102.   Sort;
  103.   GetTimer;
  104.   TextColor(White);
  105.   TextBackground(Blue);
  106.   GotoXY(1,25);
  107.   Write('Fertig - ',Sec:5:1, ' Sekunden  => ',
  108.         OrigPC/Sec:6:2, ' AD -> Ende mit <RETURN>');
  109.   REPEAT
  110.   UNTIL ReadKey=#13;
  111.   TextBackground(Black);
  112.   ClrScr;
  113. END.
  114. (* ------------------------------------------------------ *)
  115. (*                 Ende von BUBBLE.PAS                    *)
  116.