【发布时间】:2010-09-27 11:02:39
【问题描述】:
从固定数量(在本例中为 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;
编辑:如果没有正数,抱歉添加了所需的内容。我以为我以前有它,但一定错过了。
【问题讨论】:
-
当三个元素都是 MaxInt 时,你的代码不起作用。
-
好点。我可以检查这三个值是否为零,如果为零则提前返回(但我知道它们不会是 MaxInt)。
-
如果三个值都是 MaxInt,MaxInt 是列表中最小的非零正值...对吗?
-
是的,没错。但是上面的代码会返回 0,而不是 MaxInt。
标签: algorithm delphi optimization