从固定数量(在本例中为 3)个值中找到最小非零正值或在没有正问题时返回 0 的最佳算法是什么?
我的天真的方法如下(在Delphi中,但请随意使用您喜欢的任何方法),但我认为有一种更优雅的方法。
value1Temp := MaxInt;
value2Temp := MaxInt;
value3Temp := MaxInt;
if ( value1T > 0) then
value1Temp := value1;
if ( value2 > 0) then
value2Temp := value2;
if ( value3 > 0) then
value3Temp := value3;
Result := Min(value1Temp, Min(value2Temp, value3Temp));
if Result = MaxInt then
Result := 0;
Edit:抱歉,如果没有正数,则添加需要的内容。我以为我以前有过它,但一定是错过了。
我会这样做:
结果 := MaxInt;
如果 value1 > 0 则 Result := min(Result, value1);
如果 value2 > 0 则 Result := min(Result, value2);
如果值 > 0 则 Result := in(Result, value3);
如果结果 = MaxInt 则结果 := 0;
如果您希望它循环出现任意数量的问题,那么:
结果 := MaxInt;
对于 I := 1 到 N 做
如果 value[I] > 0 则 Result := min(Result, value[I]);
如果结果 = MaxInt 则结果 := 0;
如果您希望值数组从零开始,请将 for 循环更改为:0 到 N-1
我认为这段代码非常清楚地说明了正在做什么。
在这个简单的情况下,将“then”语句放在同一行可以使代码看起来更干净,但如果您认为有必要,可以随意将“then”语句缩进到下一行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)