首页 > 解决方案 > 有人可以解释这段代码是如何工作的

问题描述

我们目前正在使用 C# in Arrays。我必须从Input中获得第二大的数字。但我不知道这段代码的功能。有人可以为我解释一下。有关整个代码,请在此处查看

代码解释:

 static int ztgzahl(int[] ZL)
        {
            int MinZ = Int16.MinValue;
            int MaxZ = Int16.MinValue;
            for(int i = 0; i < ZL.Length; i++)
            {
                if (ZL[i] > MaxZ)
                {
                    MinZ = MaxZ;
                    MaxZ = ZL[i];
                }
                else if (ZL[i] > MinZ)
                {
                    MinZ = ZL[i];
                }
            }
            return MinZ;
        }

标签: c#arrays

解决方案


此代码遍历数组,试图找到两个最大的数字。但是,它为此使用了完全混乱的变量名称 MinZ 和 MaxZ。它应该是 MaxA 和 MaxB 或类似的东西。

对于每个数字,它会检查该数字是否大于当前的 MaxZ(最高)。如果是的话,它将之前的第二大交给MinZ。如果不是,它还会检查它是否比 MinZ 更小(因为一个数字可以比 MaxZ 更大,并且仍然比 MinZ 更小)。

我不是 100% 确定这有效。就个人而言,我只会对数组进行排序并从右侧获得第二个。或者,如果这是一个数据库,则使用查询从底部获取第二个。众所周知,这种逻辑很容易搞砸。


推荐阅读