如何编写合并排序?

编程入门 行业动态 更新时间:2024-10-27 04:30:11
本文介绍了如何编写合并排序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试实现合并排序,并且在运行代码时遇到stack level too deep (SystemStackError)错误.我不确定是什么问题.

I am trying to implement a merge sort and am getting stack level too deep (SystemStackError) error when I run my code. I am not sure what the issue may be.

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

更多推荐

如何编写合并排序?

本文发布于:2023-11-30 17:06:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1650817.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!