求:超大动态数组插值速度问题(50分)

  • 主题发起人 主题发起人 skadon
  • 开始时间 开始时间
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
已经定义:
var
Isa:array of integer;

IsaCount:integer;
主过程:
procedure TForm1.botton1(Sender: TObject);
var
k,Count0:integer;
begin
setLength(Isa,1000000);
IsaCount:=300000;
for k:=100 to 200000do

insert(k,k);
end;
procedure TForm1.insert(index,vindex:integer);
var
k:integer;
begin
for k:=IsaCountdo
wnto indexdo
Isa[k]:=Isa[k-1];
//在这里耗时间
Isa[index]:=vindex;
IsaCount:=IsaCount + 1;
end;

求教:如何改进insert中的算法?可否不使用for循环而直接整块移动数据呢。
 
增加一点:这里数组是Isa:array of integer;
如果换成Isa:array of string;
有没有可以更快的方法?
 
//for k:=IsaCountdo
wnto indexdo
Isa[k]:=Isa[k-1];
move(Isa[index-1],Isa[index],(IsaCount - Index + 1) * 4);
 
后退
顶部