Ruby中查找数组最小元素位置,有更简便的高效方法吗?

2026-04-11 20:131阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计290个文字,预计阅读时间需要2分钟。

Ruby中查找数组最小元素位置,有更简便的高效方法吗?

Ruby中有一个更简洁的实现方式,以下是一个示例代码:

rubydef min(array, starting, ending) minimum=starting array[starting...ending].each do |i| minimum=i if array[i]

这个函数通过遍历`starting`到`ending`之间的数组元素,找到最小的值并返回。这种方式比原代码更简洁,也更易于理解。

Ruby中查找数组最小元素位置,有更简便的高效方法吗?

现在我有

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#enum_for
得到一个项目索引对的数组,并找到具有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中查找数组最小元素位置,有更简便的高效方法吗?

Ruby中有一个更简洁的实现方式,以下是一个示例代码:

rubydef min(array, starting, ending) minimum=starting array[starting...ending].each do |i| minimum=i if array[i]

这个函数通过遍历`starting`到`ending`之间的数组元素,找到最小的值并返回。这种方式比原代码更简洁,也更易于理解。

Ruby中查找数组最小元素位置,有更简便的高效方法吗?

现在我有

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#enum_for
得到一个项目索引对的数组,并找到具有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