0

我面临着在 Ruby 中创建自己的排序方法的挑战。这是我目前得到的:

sort_me = []
current_word = 'a'
sorted = []
puts "Enter a series of words or characters to be sorted! One word at a time, press enter when complete."

while current_word != ''
    current_word = gets.chomp
    sort_me.push current_word
end

puts ''
puts "You have chosen the values:"
puts sort_me

sort_me.each do |word|
    sort_me.each do |word2|
        if word > word2
            sorted.push word
        else
        end
    end
end

puts "They have been sorted thusly:"
puts sorted

嵌套的 .each 部分出了什么问题?在我看来,它似乎应该使用 > 操作数将“sort_me”中的每个值与其他值进行比较,然后将它们从最高值的单词开始添加到“排序”中。谢谢!

4

2 回答 2

1

每个单词将被推送到结果数组的次数与数组中“较小”的单词一样多。这是因为内部循环遍历所有单词并从外部循环 ( word) 中添加单词的次数与正确的次数一样多word > word2

于 2013-04-02T22:19:58.790 回答
0

您的方法没有多大意义,对于每个单词,您会将其推送到结果中的次数与整个集合中存在较少单词的次数一样多。

你练习的重点是开发一种排序算法还是用红宝石表达它?如果是后者,请尝试从一些众所周知的算法开始,并计算出在 ruby​​ 中实现它的细节。如果是前者,你需要清楚地考虑你的算法构建方法。您采取什么策略将问题简化为更简单的形式?你的不变量是什么?你如何确保他的算法朝着目标前进?你如何证明正确性?通过调查以前的工作,开发自己的分类可能会有所帮助。期望你想出的任何东西都不如现有的众所周知的算法和实现。

于 2013-04-02T22:31:30.557 回答