一个数组中间有不定数目的空元素,现想把它们统统放到数组最后面,有没比较快且不太耗资源的算法?
比如
1,2,_,7,5,_,_,3
弄成
1,2,7,5,3,_,_,_ 另外我不会用TList,如果用它可以,请教我,谢谢先。
比如
1,2,_,7,5,_,_,3
弄成
1,2,7,5,3,_,_,_ 另外我不会用TList,如果用它可以,请教我,谢谢先。
解决方案 »
- 请教一个关于“Socket error #10060”的问题
- "inno setup+快捷方式+起始位置"问题?
- SQLServer超时已过期的问题
- 有关于面向对象的一个问题。请大家看看
- 高分求知DELPHI怎样播放MOV文件?
- 十万火急!!请帮忙!!我用TQuickREP做报表,针式打印机!如何设置宽度,如何设置每页显示记录的数量!
- 新手求助-关于同样的代码如何处理?
- 怎么实现超过256色图片在IMAGE上的显示而不丢色
- 关于在win2000下自定义纸张的打印问题,欢迎大家来畅谈!
- 如何能知道SQLSERVER数据库中表是否改变?
- 关于TRegistry.OpenKey()的问题
- 如何判断局域网内打印机的状态(是否联机等)
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
lst : array of char;
i,J : integer;
v : char;
begin setLength(lst,8);
lst[0] := '1';
lst[1] := '2';
lst[2] := '-';
lst[3] := '7';
lst[4] := '5';
lst[5] := '-';
lst[6] := '-';
lst[7] := '3';
for I := 0 to length(lst)-1 do begin
for J := i+1 to length(lst) -1 do begin
v := lst[i];
if not ( V in ['0'..'9']) then begin
lst[i] := lst[j];
lst[j] := v;
end;
end;
end; for I := 0 to length(lst)-1 do Memo1.Lines.Add(lst[i]) ;
end;end.
procedure TForm1.Button1Click(Sender: TObject);
var
lst : array of char;
i,J : integer;
v : char;
begin setLength(lst,8);
lst[0] := '1';
lst[1] := '2';
lst[2] := '-';
lst[3] := '7';
lst[4] := '5';
lst[5] := '-';
lst[6] := '-';
lst[7] := '3';
for I := 0 to length(lst)-1 do begin
for J := i+1 to length(lst) -1 do begin
v := lst[i];
if not ( V in ['0'..'9']) then begin
lst[i] := lst[j];
lst[j] := v;
end else break;
end;
end; for I := 0 to length(lst)-1 do Memo1.Lines.Add(lst[i]) ;
end;
var
lst : array of char;
i, j: integer;
v : char;
begin
setLength(lst, 8);
lst[0] := '1';
lst[1] := '2';
lst[2] := '-';
lst[3] := '7';
lst[4] := '5';
lst[5] := '-';
lst[6] := '-';
lst[7] := '3'; i := 0;
j := Length(lst) - 1;
while i < j do
begin
while (i < j) and (lst[i] <> '-') do inc(i);
while (i < j) and (lst[j] = '-') do dec(j);
if i < j then
begin
v := lst[i];
lst[i] := lst[j];
lst[j] := v;
end;
end; for i := 0 to length(lst)-1 do Memo1.Lines.Add(lst[i]) ;
end;
再声明个相同size的数组
原来A[10],
声明个B[10],初始化。循环A
int j = 0;
for(int i=0; i<10; i++)
{
if( A[i] != '' )
{
B[j]=A[i];
j++;
}
}