begin
library A6, A12;
integer i, j, z, t1, layout;
integer array a[1:10000];

   procedure sort (k, r); value k, r; integer k, r;
   begin
   integer i, j, x, w;
   i := k; j := r;
   x := a[(i+j) !div 2];

   REPEAT:
      UP:   if a[i] < x then begin i := i + 1; goto UP   end 
      DOWN: if x < a[j] then begin j := j - 1; goto DOWN end 
      if i <= j then
         begin
         w := a[i];
         a[i] := a[j];
         a[j] := w;
         i := i + 1;
         j := j - 1
         end 
      if i <= j then goto REPEAT;

   if k < j then sort(k, j);
   if i < r then sort(i, r);
   end sort;

   integer procedure mod (dividend, divisor);
      value  dividend, divisor;
      integer dividend, divisor;
   mod := dividend  -  divisor  * (dividend !div divisor);

   integer procedure clock;
      kdf9 2/0/0/0;
      SET 17; OUT; REV; ERASE; SHL-24; exit 
      algol 

   integer procedure random (z); value z; integer z;
      kdf9 1/0/0/0;
      V0 = 131071;
      {z}; V0; XD; CONT; VR; SHL+12; SHL-12; exit 
      algol 

layout := format({ndddddddcc});
open(30);

z := 1729;
for i := 1 step 1 until 10000 do
   begin
   z := random(z);
   a[i] := z
   end 

t1 := clock;
sort(1, 10000);


for i := 1 step 1 until 10000-1 do
   if a[i] > a[i+1] then
      output(30, i);

writetext(30, {CPU _ time _ in _ seconds:}); write(30, layout, clock - t1);

close(30);
end
|