阅读背景:

Ruby:堆栈级别太深(SystemStackError)实现与反转计数的合并排序

来源:互联网 

Here is my code.

这是我的代码。

@@inversions = 0
numbers = [very big array]

def merge_sort(array)
  return array if array.size <= 1

  left = array.slice(0, (array.size / 2).round)
  right = array - left
  merge(merge_sort(left), merge_sort(right))
end

def merge(left, right)
  return right if left.empty? # crashes here with stack level too deep
  return left if right.empty?

  if left.first <= right.first
    [left.first] + merge(left[1..-1], right)
  else
    @@inversions += left.size
    [right.first] + merge(left, right[1..-1])
  end
end
@@inversions = 0



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: