Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 用pascal对数组重新排序,降序_Arrays_Sql Order By_Pascal - Fatal编程技术网

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吗?我自己也理解,但我不知道如何安排我的程序使其工作。你应该将其转化为答案,然后接受它。