所以我想在Ruby中實現快速排序,我得到這個錯誤`快速排序「:堆棧層次過深(SystemStackError)快速排序實現:堆棧層次過深(SystemStackError)
def quicksort(array)
if array.length <= 1
return array
end
less = Array.new
greater = Array.new
pivot = array[array.length/2]
array.each do |x|
if x < pivot
less << x
else
greater << x
end
end
return quicksort(less) << pivot << quicksort(greater)
end
編輯 我改變else
到elsif x > pivot
,它似乎工作。
快速排序可以使用多達n個層次的堆棧(在病理情況下),其中n是輸入元素的數量。如果遇到這種情況,那麼只增加堆棧大小,選擇更好的透視方法(這隻會減少病態的壞情況),或更改快速排序實現將會修復它。如果它發生的小n,那麼終端條件是錯誤的,當然:)什麼是導致此異常的[最小]輸入? – 2011-11-08 22:28:29
在什麼情況下你得到這個錯誤? – Ryanmt
我改變了其他=> elsif x>支點,它似乎工作。 – lesce