【发布时间】:2015-03-17 06:20:59
【问题描述】:
我试图在不使用 .sort 方法的情况下将多个字符串排序到一个按字母顺序排列的数组中。我试过 while 循环和 if 语句,但它不起作用。
在将 user_input 与数组进行比较时,我在第 13 行不断收到 nil 错误。我不知道如何解决这个问题,我什至不明白为什么会这样。
alpha_sorter = [' ']
user_input = ' '
sort_counter = 0
puts 'Type in as many words as you want.'
puts 'One word per line.'
puts 'When you are done, leave the line blank and press enter.'
while (user_input != '')
user_input = gets.chomp.downcase
if (user_input <= alpha_sorter[sort_counter])
alpha_sorter.insert(sort_counter, user_input)
sort_counter = 0
else
sort_counter += 1
end
end
puts alpha_sorter
我的程序使用排序:
alpha_sorter = []
user_input = ' '
puts 'Type in as many words as you want.'
puts 'One word per line.'
puts 'When you are done, leave the line blank and press enter.'
while (user_input != '')
user_input = gets.chomp
alpha_sorter.push user_input
end
puts alpha_sorter.sort
【问题讨论】:
-
你为什么不想使用排序?
-
这是一个挑战,在不使用排序的情况下做到这一点。
-
在
user_input > alpha_sorter[sort_counter]你去下一个循环迭代,增加sort_counter,这显然是错误的。 -
您的解决方案的问题在于您实际上并没有找到放置新输入的正确位置。每次通过获取输入的循环时,您只检查一个位置——无论它是在它之前还是之后。无论您决定什么,您都不会进一步检查。但是如果项目不在这个位置之后,而是在更远的三个位置之后呢?你的“弄清楚项目应该去哪里”部分不应该是一个单一的 if 语句,它也应该是一个循环......继续寻找它去哪里直到你发现它实际去哪里)。这就是人们建议其他排序算法的原因。