2017-04-12 114 views
0
A = [5,3,1,4,2] 

4.downto(1) do |i| 
    0.upto(i) do |j| 
    #here i am making the actual buble sort 

    if A[j] > A[j + 1] 
     tmp = A 
     A[j + 1] = A[j] 
     A[j] = tmp 
    end 
    end 
end 

#just printing the array 
A.each do |i| 
    print i 
end 

gets() 

有人知道爲什麼會發生?我只是不知道nil元素在哪裏。它說'Fixnum與零比較失敗',我不知道爲什麼

我試了一切,我知道但我正在學習,我找不到錯誤。

感謝您的幫助,另外還有一個小問題,當我嘗試使for循環不起作用時,這不是什麼大問題,因爲有多種方法可以做出同樣的事情,但仍然存在...

回答

3

i = 4j = i + 1 #=> 5,您嘗試執行

A[j] > A[j + 1] 

計算結果爲

A[4] > A[5] 

然後

2 > nil 

這就提出了一個例外,因爲2.class #=> FixnumFixnum#>需要>的說法是數字。在Ruby v2.4 + Fixnum方法中已經轉換爲Integer方法(例如,Integer#>)。

相關問題