문제

바로 지금 나

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

더 나은"구현"루비에서?이는 하나 여전히 보이는 c-틱.감사합니다.

도움이 되었습니까?

해결책

을 찾으려면 지수의 최소한의 요소를 사용할 수 있습니다 Enumerable#enum_for 하기 을 얻을 배열의 항목-index 쌍견을 최소한으로 사람들의 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

다른 팁

기본적으로는 할 수 있습니다,하지만 당신은 그것을 쓸 수 있는 조금 더 많은 간결하게:

def minval(arr)
    arr.inject {|acc,x| (acc && acc < x ? acc : x)}
end

거기에 간단한 방법이며 그것이 나를 위해서는 루비 1.9.2:

a = [6, 9, 5, 3, 0, 6]
a.find_index a.min

이것은 표준에 대한 알고리즘을 찾는 최소한의 배열 요소,그것이 더 좋을 수 있을 배열 정렬되기 전에 이 함수가 호출됩니다.

그렇지 않으면 나를 찾을 수 없는 더 효율적인 방법이 있습니다.특히,선형 시간에서 큰 O 표기법은 우리가 할 수 있습니다.

는 경우 이것은 단순히 학문적 질문,왜 그냥 사용 루비 native sort 방법?그것은 사용하여 구현 퀵 알고리즘으로 간주됩니다.

a = [3, 4, 5, 1, 7, 5]
a.sort![0] # => 1
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top