guainew:array [0..100] of guailist; //要排序的数组,guailist是自定义类型,有ID和P两个数据,以P的大小来决定排列顺序.[!![之所以设定长度,是因为我下面在给列表赋值时,如果用动态数组会出错,不知道如何解决]!!]
pppp:guailist; //交换位置时的临时变量 for m:=0 to length(guainew)-1 do begin
j:=m;
for i:=m+1 to length(guainew) do begin
if (guainew[i].p<guainew[j].p)then begin j:=i;end;
if (j>m) then begin
pppp:=guainew[m];
guainew[m]:=guainew[j];
guainew[j]:=pppp;
end;
end;
end; for num:=0 to length(guainew)-1 do begin //list显示部分
listbox4.Items.Add(inttostr(guainew[num].id)+'-'+floattostr(guainew[num].p));
end;
注:guainew数组里,P是single的,而且大约有70都是0,其他30个才是>0的数据。而且有一点很奇怪,listbox4.Items.Add在使用的时候应该是把新的数据‘追加’进来才对。那么我在“list显示部分”那里for 10次和100次的结果,前10个数据应该是一样的。但实际上“list显示部分”那里for 10次出现的全部都是0,for 100次的时候前几个数据才是正确的非0数据。不明白是怎么回事……
pppp:guailist; //交换位置时的临时变量 for m:=0 to length(guainew)-1 do begin
j:=m;
for i:=m+1 to length(guainew) do begin
if (guainew[i].p<guainew[j].p)then begin j:=i;end;
if (j>m) then begin
pppp:=guainew[m];
guainew[m]:=guainew[j];
guainew[j]:=pppp;
end;
end;
end; for num:=0 to length(guainew)-1 do begin //list显示部分
listbox4.Items.Add(inttostr(guainew[num].id)+'-'+floattostr(guainew[num].p));
end;
注:guainew数组里,P是single的,而且大约有70都是0,其他30个才是>0的数据。而且有一点很奇怪,listbox4.Items.Add在使用的时候应该是把新的数据‘追加’进来才对。那么我在“list显示部分”那里for 10次和100次的结果,前10个数据应该是一样的。但实际上“list显示部分”那里for 10次出现的全部都是0,for 100次的时候前几个数据才是正确的非0数据。不明白是怎么回事……
begin
for i:=m+1 to length(guainew)-1 do
begin
if (guainew[i].p<guainew[m].p)then
begin
pppp:=guainew[m];
guainew[m]:=guainew[i];
guainew[i]:=pppp;
end;
end;
end;
pppp:guailist; //交换位置时的临时变量 for m:=0 to length(guainew)-1 do
begin
j:=m;
/////////////////////////////////////////////////////////
for i:=m+1 to length(guainew) do
begin
if (guainew[i].p<guainew[j].p)then
begin
j:=i;
end;
end;
//////////////////////////////////////////这一部分应该在一起的
if (j>m) then
begin
pppp:=guainew[m];
guainew[m]:=guainew[j];
guainew[j]:=pppp;
end;
end; for num:=0 to length(guainew)-1 do begin //list显示部分
listbox4.Items.Add(inttostr(guainew[num].id)+'-'+floattostr(guainew[num].p));
end;
我们现在学c++,刚自学了一点delphi,如果说错了还请见凉