加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

算法 – 求最小正值

发布时间:2020-12-15 04:19:31 所属栏目:大数据 来源:网络整理
导读:从固定数(在这种情况下为3)的值中找到最小非零正值的最佳算法是什么,如果没有正问题则返回0? 我的天真方法如下(在Delphi中,但随意使用你喜欢的任何东西),但我认为有一种更优雅的方式. value1Temp := MaxInt;value2Temp := MaxInt;value3Temp := MaxInt;if (
从固定数(在这种情况下为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;

编辑:抱歉,如果没有正数,则添加所需内容.我以为我以前曾经在那里,但一定错过了它.

解决方法

我这样做:

Result := MaxInt;
if value1 > 0 then Result := min(Result,value1);
if value2 > 0 then Result := min(Result,value2);
if value3 > 0 then Result := min(Result,value3);
if Result = MaxInt then Result := 0;

如果你想在一个有任意数量问题的循环中,那么:

Result := MaxInt;
for I := 1 to N do
if value[I] > 0 then Result := min(Result,value[I]);
if Result = MaxInt then Result := 0;

如果希望value数组从零开始,请将for循环更改为:0到N-1

我认为这段代码非常清楚地知道正在做什么.

将“then”语句放在同一行上会使代码在这种简单的情况下看起来更清晰,但如果您觉得有必要,可以随意将“then”语句缩进到下一行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读