Arrays 用pascal对数组重新排序,降序
找不到类似的帖子,所以发布我自己的问题。 我得到了实数的变量数组:Arrays 用pascal对数组重新排序,降序,arrays,sql-order-by,pascal,Arrays,Sql Order By,Pascal,找不到类似的帖子,所以发布我自己的问题。 我得到了实数的变量数组: price = array([58.9],[38.7],[8.95],[28.3]) 我需要按降序排列,我的代码在数组的最后一个值之前一切都很好,我知道原因,但我自己找不到解决方案。无论如何,代码如下: Procedure orderarray; Var i,dz, j: Integer; c :real; v :string[25]; Begin dz := 1; For i := 1 to 3 do
price = array([58.9],[38.7],[8.95],[28.3])
我需要按降序排列,我的代码在数组的最后一个值之前一切都很好,我知道原因,但我自己找不到解决方案。无论如何,代码如下:
Procedure orderarray;
Var i,dz, j: Integer;
c :real;
v :string[25];
Begin
dz := 1;
For i := 1 to 3 do
Begin
For j:=i+1 to 4 do
if price[j]>price[dz] //searches for highest value in the array
then dz:=j;
c:=price[i]; price[i] := price[dz]; price[dz] := c; //switches current value with highest
End;
每次都需要将dz重置为j
for j:=i+1 to 4 do
begin
dz := j;
if price[j]>price[dz]
...;
c:=price[i]; ...;
end
在您的示例中,dz将始终保持为1,最后一个元素将永远不会移动,因为它小于第一个元素 我找到了解决自己问题的办法。以防任何人需要它,发布它。我需要将dz重置为I,而不是j
Procedure orderarray;
Var i,dz, j: Integer;
c :real;
v :string[25];
Begin
For i := 1 to 3 do
Begin
dz:=i;
For j:=i+1 to 4 do
if price[j]>price[dz] //searches for highest value in the array
then dz:=j;
c:=price[i]; price[i] := price[dz]; price[dz] := c; //switches current value with highest
End;
谢谢大家的帮助,没有你们的帮助,无论如何都无法解决问题。你确定要将dz设置为j吗?我自己也理解,但我不知道如何安排我的程序使其工作。你应该将其转化为答案,然后接受它。