主题:有人能帮我降低这个程序的时间复杂度吗?
program test;{程序的功能是产生一个1-80的随机数列,数列中的数在1-80之间,没有重复}
type a=array[1..80] of integer;
var
i,temp:integer;
data:a;{一个用于存放生成数列的数组}
check:a;{一个用于标识该数是否出现过的数组,程序设想是}
{比如8已经出现过,则check[8]将被置为1,所以程序运行中只有当随机产生的数对应在check数组中的标识不为1时,才能赋给数组data}
begin
for i:=1 to 80 do
check[i]:=0;
for i:=1 to 80 do
begin
repeat
randomize;
temp:=random(81);
if temp=0 then temp:=1;
until check[temp]=0;
data[i]:=temp;
check[temp]:=1;
end;
for i:=1 to 80 do
begin
write(data[i]:4);
if i mod 4=0 then writeln;
end;
end.
程序可正常运行,问题是运行时间需要将近一分钟,太久了,各位有无办法帮忙改善一下
type a=array[1..80] of integer;
var
i,temp:integer;
data:a;{一个用于存放生成数列的数组}
check:a;{一个用于标识该数是否出现过的数组,程序设想是}
{比如8已经出现过,则check[8]将被置为1,所以程序运行中只有当随机产生的数对应在check数组中的标识不为1时,才能赋给数组data}
begin
for i:=1 to 80 do
check[i]:=0;
for i:=1 to 80 do
begin
repeat
randomize;
temp:=random(81);
if temp=0 then temp:=1;
until check[temp]=0;
data[i]:=temp;
check[temp]:=1;
end;
for i:=1 to 80 do
begin
write(data[i]:4);
if i mod 4=0 then writeln;
end;
end.
程序可正常运行,问题是运行时间需要将近一分钟,太久了,各位有无办法帮忙改善一下