Pascal,请告诉我这个循环是如何工作的

维尔米斯·内维埃拉(Vilmis Neviera)
procedure arranging;
var 
  i,j,h : integer;
  c : real;
begin
  for i := 1 to n - 1 do
  begin
    h := i;
    for j := i + 1 to n do
      If D[j] > D[h] then 
        j := h;
    c := D[i];
    D[i] := D[h];
    D[h] := c;
  end;
end;

这是我的pascal编程书中的循环,该过程应该从大到小排列一个数组,该数组在.txt文件中,并且已经有另一个过程可以读取它(N是一个数组的长度)。我不了解此循环的工作原理:(您能解释一下吗?(第一次在这里问,请不要判断)

鲁道德

您的算法有误。
与的行j := h;应做相反的事情。h是数组中值最高的索引,从i起始位置开始计算因此,在内循环完成后,索引h指向最大值。之后,您将看到posi之间的数组交换h,因此D [i]具有最大的值。

下一个内部循环在上一个之后开始1个位置,并重复进行直到找到下一个最大值并将其放置在数组中的正确位置为止。等等。

procedure arranging;
var 
  i,j,h : integer;
  c : real;
begin
  for i := 1 to n - 1 do // Loop all values but the last
  begin
    h := i; // <-- Assume largest value in index i
    for j := i + 1 to n do // Loop from i+1 to last value 
      If D[j] > D[h] then 
        h := j; // <-- h points to largest array value so far 
    c := D[i];  // Save D[i] to a temporary storage
    D[i] := D[h]; // Now swap values so D[i] has the largest value 
    D[h] := c;
  end;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

请告诉我这个 UI 名称是如何命名的

你能告诉我这个 Solidity 是如何工作的吗?

谁能告诉我为什么这个无休止的 while 循环不能正常工作?

我如何让这个 RPG 工作,它告诉我 Y 和 N 没有定义

请告诉我如何编写nuxt插件'printd'

请告诉我如何制作跟随角色的UI

PHP 请告诉我如何访问对象键

PHP strtok()如果我理解这个权利,请告诉我

请告诉我为什么这个对象迭代器只允许记录一次

谁能告诉我这个密码的名称?

告诉我`String n = null;`是如何工作的?

Flutter:这个概念叫什么名字?请告诉我要寻找什么才能更好地理解

请告诉我如何增加字数限制而不是字符数限制

应用android5.1.1 Proguard后会发生VerifyError。请告诉我如何解决

请告诉我如何在JS中重复此过程?

请告诉我如何在 CSS 中使用变量作为属性值

这个错误试图告诉我什么,我该如何解决?

我是php的新手...请告诉我mysql_fetch_array($ n1)的作用和循环作用

有人能告诉我如何摆脱这个错误吗

请告诉我何时在Java中使用getInstance()方法。

请告诉我Range Mex查询的高效算法

请谁能告诉我为什么输出是这样的?(蟒蛇)

请告诉我为什么它错了(LCM & GCD)

这个Ecto Constraint Error试图告诉我什么?

这个要求告诉我不要做什么?

谁能告诉我这个符号是什么

谁能告诉我这个 javascript 等价物

请解释我如何使这个高阶函数工作

有人能告诉我为什么这个简单的 PHP 循环不起作用吗?