我試圖在Ruby中構建排序方法來對數組進行排序。這是本書的一個示例練習。 程序將查看原始數組中的每個元素,並確定它們的最低值。Ruby:`each':堆棧級別太深(SystemStackError)排序數組算法
然後將該值添加到新創建的名爲「sorted」的數組中,並從原始數組中刪除該數字。
我們現在有原始數組丟失1個元素和新數組有1個元素。我們用這些調整過的陣列重複上述步驟,直到原來的陣列變空。
不過,我已經得到了我不明白髮生了什麼錯誤:
Blockquote./sorting_argorith.rb:9:in`每個':堆棧層次過深(SystemStackError)
這是我的代碼:
array = [6,4,8,3,2,4,6,7,9,0,1,8,5]
def sorta array #method wrapper
really_sort array, []
end
def really_sort array, sorted #main method
a = array[0] # set a = the first element
array.each do |i|
if a > i
a = i #check each element, if anything small than a,
end # set a to that value
end
sorted.push a #we've got the smallest element as a,
array.delete a #it is then moved from the old to the new array
if array == []
break
end
really_sort array, sorted #keep going with my two modified arrays
end # till the original is empty (completely moved)
sorta array #call the wraped method
puts
print array
print sorted
如果您願意,請仔細關注拼寫。啓用拼寫檢查器也有幫助:) –
嗨,我編輯了我的問題與您給我的問題,因爲我從編輯器複製舊代碼。現在是'返回排序'。我的兩個陣列現在都是空的:( –
@LoganNguyen:不要那麼做(用代碼來回答你的問題代碼)你現在有另外一個錯誤了,提出另一個問題(當然你自己弄清楚了) –