一个一维动态数组,里面有10个元素,其中有N个元素值为0,现在把这N个值为0的元素删除。求最优算法(100分)

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

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,请给出例或思路,谢谢!
 
用指针,一遍循环就可以了!
 
用两个变亮+循环就行了!
 
是否能详细一点,我一点头绪也没有,谢谢啦。
 
这是一个排序的,把所有为0的的元素都放到数组的末端了,然后你删除就行了
procedure TForm1.Sort(var a:array of integer);
var
i,j,t:integer;
flag:boolean;
begin
i:=-1;
j:=-1;
t:=0;
flag:=true;
while (flag) do
begin
if a[t]=0 then
begin
if i=-1 then i:=t;
inc(t);
end
else
begin
j:=t;
flag:=false;
end;
if t>=10 then flag:=false;
end;
if t>=10 then exit;
while j<10 do
begin
t:=a;
a:=a[j];
a[j]:=t;
t:=i+1;
i:=-1;
flag:=true;
while (flag) do
begin
if a[t]=0 then
begin
if i=-1 then
begin
i:=t;
t:=j;
end;
inc(t);
end
else
begin
flag:=false;
end;
if t>=10 then flag:=false;
end;
j:=t;
end;
end;
 
Procedure TForm1.sort(var v: array of integer);
var i,p:integer;
begin
i:=low(v);
for p:=low(v) to high(v) do
begin
if not (v[p]=0) then
begin
v:=v[p];
i:=i+1;
end;
end;
SetLength(v,i-low(v)+1);
end;
 
谢谢各位,
 
后退
顶部