2014-04-25 118 views
0

我正在创建一个程序,要求输入所需的输入数量,然后对这些输入进行气泡排序。 我的代码:方式是我的代码在获取所有输入之前显示输出?

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 

我已经测试了起泡环和它的正常工作。我遇到的问题是输出,程序要求每一行输入一个新行,但每当我输入任何输入时,它立即显示输出,并且不会等待输入其他元素。有人可以帮我解决问题,让程序保持输出,直到完成所有输入为止。

回答

3

您在您的元素收集循环中放入p(list)(以及bubble_sort(list)和大量其他东西)。如果你不想让它们成为循环的一部分,你应该把它们放在外面。

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 
+1

@ user3467152 - 只需使用'puts',而不是'p'。 – BroiSatse

相关问题