【发布时间】:2015-01-20 00:07:22
【问题描述】:
我一直在研究 Chris Pine 的 Ruby 教程,目前正在研究一种不使用 sort 对名称数组进行排序的方法。
我的代码如下。它工作得很好,但比我想象的更进一步!
puts "Please enter some names:"
name = gets.chomp
names = []
while name != ''
names.push name
name = gets.chomp
end
names.each_index do |first|
names.each_index do |second|
if names[first] < names[second]
names[first], names[second] = names[second], names[first]
end
end
end
puts "The names you have entered in alphabetical order are: " + names.join(', ')
这是我难以理解的排序。
我的理解是each_index 会查看数组中每个项目的位置。然后if 语句获取每个项目,如果数字大于下一个,它将在数组中交换它,继续这样做直到最大的数字在开始。我原以为这只会颠倒我的数组,但是它确实按字母顺序排序。
有人能告诉我这个算法是如何按字母顺序工作的吗?它在什么时候查看起始字母是什么?
提前感谢您的帮助。我敢肯定这是非常简单的事情,但经过大量搜索后我无法弄清楚!
【问题讨论】:
标签: ruby arrays sorting each alphabetical