H
*HelloWorld*
Unregistered / Unconfirmed
GUEST, unregistred user!
我想用插入法(是这个名字吗?)来实现对一个已有数组的重新排序。由于原来从来没学过算法,
所以在写程序的时候遇到了很大的问题,一直调不通。大家帮忙找一下错好吗?
我的部分程序在下面,arr是待排序的数组,sort是排好的数组。
const
arr:array[1..5] of integer=(5,4,2,3,1);
procedure TForm1.Button3Click(Sender: TObject);
var
i,j,Temp,Len:integer;
sort:array[1..5] of integer;
begin
sort[1]:=arr[1];
Len:=length(arr);
for i:=2 to Len do
begin
Temp:=arr;
if Temp>=arr[i-1] then
break
else
begin
sort:=sort[i-1];
for j:=1 to i-2 do
if Temp>=sort[i-j-1] then
begin
sort[i-j]:=Temp;
break;
end
else
sort[i-j]:=sort[i-j-1];
end;
end;
for i:=1 to Len do
listbox1.Items.Add(inttostr(sort));
end;
所以在写程序的时候遇到了很大的问题,一直调不通。大家帮忙找一下错好吗?
我的部分程序在下面,arr是待排序的数组,sort是排好的数组。
const
arr:array[1..5] of integer=(5,4,2,3,1);
procedure TForm1.Button3Click(Sender: TObject);
var
i,j,Temp,Len:integer;
sort:array[1..5] of integer;
begin
sort[1]:=arr[1];
Len:=length(arr);
for i:=2 to Len do
begin
Temp:=arr;
if Temp>=arr[i-1] then
break
else
begin
sort:=sort[i-1];
for j:=1 to i-2 do
if Temp>=sort[i-j-1] then
begin
sort[i-j]:=Temp;
break;
end
else
sort[i-j]:=sort[i-j-1];
end;
end;
for i:=1 to Len do
listbox1.Items.Add(inttostr(sort));
end;