我一直在研究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
语句获取每个项目,如果该数字大于下一个项目,则将其交换到数组中,继续执行此操作,直到最大数字处于起始位置。我会认为这只是颠倒了我的数组,但它按字母顺序排序。
有人能够跟我说说这个算法是如何按字母顺序工作的,以及它在什么时候看着什么开始的字母?
在此先感谢您的帮助。我相信这是非常简单的事情,但经过多次搜索,我无法弄清楚它!