2015-10-16 122 views
1

我試圖在ruby中實現泡沫排序。對於迭代,我使用each_index作爲輸入數組。我在最後一個索引處得到一個錯誤,因爲i + 1索引元素是零,而ruby提供了與Fixnum相比較的例外。有沒有辦法解決它?不知何故,我可以在第二個元素處停止each_index嗎?如何在ruby中運行each_index直到倒數第二個元素?

def bubble_sort(array) 
    flag = false 
    while flag == false 
     array.each_index do |i| 
      if array[i] > array[i+1] 
       array[i], array[i+1] = array[i+1], array[i] 
       flag = false 
      else 
       flag = true 
      end 
     end 
    end 
    puts array 
end 

bubble_sort([2,5,3,8,5,6,10]) 

回答

1

看看each_cons

def bubble_sort(array) 
    flag = false 
    while flag == false 
     array.each_index.each_cons(2) do |i,j| 
      if array[i] > array[j] 
      array[i], array[j] = array[j], array[i] 
      flag = false 
     else 
      flag = true 
     end 
     #etc 
相關問題