Ruby中查找数组最小元素位置,有更简便的高效方法吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计290个文字,预计阅读时间需要2分钟。
Ruby中有一个更简洁的实现方式,以下是一个示例代码:
rubydef min(array, starting, ending) minimum=starting array[starting...ending].each do |i| minimum=i if array[i]
这个函数通过遍历`starting`到`ending`之间的数组元素,找到最小的值并返回。这种方式比原代码更简洁,也更易于理解。
def min(array,starting,ending) minimum = starting for i in starting+1 ..ending if array[i]<array[minimum] minimum = i end end return minimum end
Ruby中有更好的“实现”吗?这个仍然看起来像c-ish.
谢谢.
得到一个项目索引对的数组,并找到具有Enumerable #min的最小值(这也是原始数组的最小值).
% irb irb> require 'enumerator' #=> true irb> array = %w{ the quick brown fox jumped over the lazy dog } #=> ["the", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"] irb> array.enum_for(:each_with_index).min #=> ["brown", 2]
如果要将其绑定到特定的数组索引:
irb> start = 3 #=> 3 irb> stop = 7 #=> 7 irb> array[start..stop].enum_for(:each_with_index).min #=> ["fox", 0] irb> array[start..stop].enum_for(:each_with_index).min.last + start #=> 3
本文共计290个文字,预计阅读时间需要2分钟。
Ruby中有一个更简洁的实现方式,以下是一个示例代码:
rubydef min(array, starting, ending) minimum=starting array[starting...ending].each do |i| minimum=i if array[i]
这个函数通过遍历`starting`到`ending`之间的数组元素,找到最小的值并返回。这种方式比原代码更简洁,也更易于理解。
def min(array,starting,ending) minimum = starting for i in starting+1 ..ending if array[i]<array[minimum] minimum = i end end return minimum end
Ruby中有更好的“实现”吗?这个仍然看起来像c-ish.
谢谢.
得到一个项目索引对的数组,并找到具有Enumerable #min的最小值(这也是原始数组的最小值).
% irb irb> require 'enumerator' #=> true irb> array = %w{ the quick brown fox jumped over the lazy dog } #=> ["the", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"] irb> array.enum_for(:each_with_index).min #=> ["brown", 2]
如果要将其绑定到特定的数组索引:
irb> start = 3 #=> 3 irb> stop = 7 #=> 7 irb> array[start..stop].enum_for(:each_with_index).min #=> ["fox", 0] irb> array[start..stop].enum_for(:each_with_index).min.last + start #=> 3

