2014-12-03 34 views
1

正在使用遞歸進行合併排序,這可能是堆棧溢出的原因。我已經搜索,但似乎無法找出代碼的哪一部分導致所有這一切。正在執行合併排序算法的系統堆棧錯誤

這裏是我的代碼:

def merge(arr) 
    return arr if arr.length <= 1 
    mid = arr.length/2 
     x = arr[0..mid] 
     y = arr[mid..-1] 
     merge_sort(merge(x),merge(y)) 
    end 

    def merge_sort(left, right) 
     sorted = [] 
     while left.length > 0 && right.length > 0 
     if left.first > right.first 
      sorted << left.shift 
     else 
      sorted << right.shift 
     end 
    end 
     sorted.concat(left).concat(right) 
    end 


nums = 15.times.map {rand(100) + 1} 
puts merge(nums) 

在終端,我得到:合併-sort.rb:2:堆棧層次過深(SystemStackError)

回答