c# - 有人可以解释这段代码是如何工作的
问题描述
我们目前正在使用 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;
}
解决方案
此代码遍历数组,试图找到两个最大的数字。但是,它为此使用了完全混乱的变量名称 MinZ 和 MaxZ。它应该是 MaxA 和 MaxB 或类似的东西。
对于每个数字,它会检查该数字是否大于当前的 MaxZ(最高)。如果是的话,它将之前的第二大交给MinZ。如果不是,它还会检查它是否比 MinZ 更小(因为一个数字可以比 MaxZ 更大,并且仍然比 MinZ 更小)。
我不是 100% 确定这有效。就个人而言,我只会对数组进行排序并从右侧获得第二个。或者,如果这是一个数据库,则使用查询从底部获取第二个。众所周知,这种逻辑很容易搞砸。
推荐阅读
- git - 我怎样才能更新 git?
- java - 如何从 WebView 中提取 html 代码并将其放入 TextView?
- typescript - TypeScript:函数类型派生,为什么类型d为真?
- javascript - undefined 不是对象(评估 '_react.React.Component')
- python - 为 np.array 分配较大的值
- ubuntu - 协议错误:尝试将文件夹/文件从远程服务器传输到本地时,mtime.sec 不存在
- java - Java 服务器使用套接字连接到其他服务器
- javascript - 更改 setTimeout 函数以使 for 循环按升序打印
- java - 如何打印数组中2个参数的相同对象的值的总和
- visual-studio-code - 你如何编辑垂直线,该行打破了vs代码中的代码?