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
|