gpt4 book ai didi

ruby - 如何编写归并排序?

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:27 24 4
gpt4 key购买 nike

我正在尝试实现合并排序,但在运行我的代码时出现堆栈级别太深 (SystemStackError) 错误。我不确定可能是什么问题。

def merge_sort(lists)
lists if lists.count == 1

middle = lists[0..(lists.count / 2) - 1 ]
left = lists[0..middle.count - 1]
right = lists[middle.count..lists.count]

x = merge_sort(left)
y = merge_sort(right)
end

merge_sort [1,2,3,4,5,6,7,8]

任何帮助都会很棒!

最佳答案

来自 wikipedia :

def mergesort(list)
return list if list.size <= 1
mid = list.size / 2
left = list[0...mid]
right = list[mid...list.size]
merge(mergesort(left), mergesort(right))
end

def merge(left, right)
sorted = []
until left.empty? || right.empty?
if left.first <= right.first
sorted << left.shift
else
sorted << right.shift
end
end
sorted.concat(left).concat(right)
end

关于ruby - 如何编写归并排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com