假设我有这样的东西:

def find_the_best(array)
  temp = 15435435435 # sufficiently large number
  value = 0
  array.each do |element|
    some_var = function_does_something_complex_and_returns_value(element)
    some_var < temp ? value = element[0]
  end
end

这个数量足够大的解决方案可以工作,但看起来有点老套处理这个问题的最佳方法是什么,特别是在ruby中,但通常也是这样。问题是,它真的应该设置为0,然后分配第一个值,之后的每个值只有在较小时才应该采用。

最佳答案

这看起来不像排序问题,而是基于标准的最佳匹配。
你在寻找最小的值,不需要有temp值(除非有什么你没有告诉我们的)。
简单地假设第一个值是最好的,然后继续检查。

best_value = array[0];
foreach( element in array )
{
    if( best_value > element )
        best_value = element;
}

关于ruby - 如何“比较并找到最佳”最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11456900/

10-11 01:46
查看更多