方法是我的代码在获得所有输入之前显示输出?

时间:2014-04-25 20:31:34

标签: ruby bubble-sort

我正在创建一个程序,询问所需的输入数量,然后对这些输入进行气泡排序。 我的代码:

def bubble_sort(list)
       sl = list.clone
       sl.each_index do |i|
         ( sl.length - i - 1 ).times do |j|
             if ( sl[j+1] < sl[j] )
                 sl[j], sl[j+1] = sl[j+1], sl[j]
             end
         end
       end
end
puts "Enter Number of Elements"
n = gets.chomp 
puts "Enter #{n} elements" 
n.to_i.times do 
(list ||= []) << gets.chomp
bubble_sort(list)
p ('Sorted elements:')
p (list)
end 

我测试了冒泡循环,它工作正常。我遇到的问题是输出,程序在新行中询问每个输入,但每当我输入任何输入时,它立即显示输出,并且它不会等待输入其他元素。有人可以帮助我解决如何修复我的程序保持输出直到它从所有输入完成?

2 个答案:

答案 0 :(得分:3)

您将p(list)(以及bubble_sort(list)和其他大量内容)放入元素收集循环中。如果你不希望它们作为循环的一部分完成,你应该将它们放在外面。

答案 1 :(得分:1)

因为你告诉你的机器这样做了。尝试:

list = []
n.to_i.times do 
  list << gets.chomp
end

bubble_sort(list)
p ('Sorted elements:')
p (list)

而不是:

n.to_i.times do 
  (list ||= []) << gets.chomp
  bubble_sort(list)
  p ('Sorted elements:')
  p (list)
end