0

アルゴリズムの複雑さのテキストの紹介を読んでいます。著者はいくつかの異なる言語で例を示しており、それをたどることができました。それから決定的な瞬間に、彼は私にとってギリシャ語であるこの Ruby コードを私にぶつけました。誰かがこのコードが何をするのか説明できますか?

b = []
n.times do
    m = a[ 0 ]
    mi = 0
    a.each_with_index do |element, i|
        if element < m
            m = element
            mi = i
        end
    end
    a.delete_at( mi )
    b << m
end
4

1 に答える 1

5
b = [] # b is a new array
n.times do # do this n times
    m = a[ 0 ] # m is the first element of a
    mi = 0 # mi (the index of m) is 0
    a.each_with_index do |element, i| # loop through a, with the index
        if element < m # if the element is less than m
            m = element # set m to the element
            mi = i # set mi to the element's index
        end
    end
    a.delete_at( mi ) # delete the element at index mi (which is m)
    b << m # append m to b
end

基本的に、 から までのすべてのコードm = a[ 0 ]b << m、 内の最小の要素を見つけて にa移動しbます。それは時々起こりnます。

したがって、これが行うことは、n最小の要素を からaに移動することbです。

于 2013-06-14T01:47:09.837 に答える