估计偶的这个最简单啦
//输出照抬前面兄弟的
procedure TForm1.PrintIntArray(pi: PInteger;
ACount: Integer);
var
i: Integer;
begin
Memo1.Lines.begin
Update;
try
for i := 0 to ACount - 1do
begin
Memo1.Lines.Add(IntToStr(pi^));
Inc(pi);
end;
Memo1.Lines.Add('*******************************')
finally
Memo1.Lines.EndUpdate;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
iCount: Integer;
a: array of Integer;
tempinteger:integer;
j:integer;
begin
Memo1.Clear;
try
iCount := StrToInt(Edit1.Text);
//Edit中输入数组的大小
except
iCount := 100;
end;
//初始化数组
SetLength(a, iCount);
Randomize;
for i := 0 to iCount - 1do
a := Random(iCount * 2) + 1;
//用随机数初始a[0..99]
//a := i + 1;
//输出原始数组
PrintIntArray(@a[0], iCount);
//这个部份是偶的算法-------------------------
i:=0;
while i<iCountdo
begin
if (a mod 2)=0 then
//若当前是偶数
begin
for j:=i+1 to iCount-1do
if (a[j] mod 2)=1 then
//在其后找到第一个奇数
begin
tempinteger:=a;
a:=a[j];
a[j]:=tempinteger;
break;
//找到第一个即终止For循环
end;
end;
i:=i+1;
end;
//现在a[0..x]都是奇数,a[x+1..99]都是偶数,且原来先后顺序不变----------------
//输出排序后的数组
PrintIntArray(@a[0], iCount);
end;