algorithm - Code Golf : combining multiple sorted lists into a single sorted list

标签 algorithm language-agnostic sorting merge code-golf

实现一种算法,将任意数量的排序列表合并为一个排序列表。目的是用您喜欢的任何语言创建最小的工作程序。

例如:

input:  ((1, 4, 7), (2, 5, 8), (3, 6, 9))
output: (1, 2, 3, 4, 5, 6, 7, 8, 9)

input:  ((1, 10), (), (2, 5, 6, 7))
output: (1, 2, 5, 6, 7, 10)

注意:连接输入列表然后使用语言提供的排序功能的解决方案不符合高尔夫精神,不会被接受:

sorted(sum(lists,[])) # cheating: out of bounds!

除此之外,您的算法应该(但不一定)快得多!

清楚地说明语言、任何弱点和字数。只在计数中包含有意义的字符,但出于艺术/可读性目的,可以随意在代码中添加空格。

为了保持整洁,建议改进评论或在适当的地方编辑答案,而不是为每个“修订”创建一个新答案。

编辑:如果我再次提交此问题,我会将“未提供语言排序”规则扩展为“不要连接所有列表然后对结果进行排序”。执行先连接后排序的现有条目实际上非常有趣且紧凑,因此我不会主动引入它们违反的规则,但请随意在新提交的规范中使用更严格的规范。


灵感来自 Combining two sorted lists in Python

最佳答案

42 个字符的 OCaml:

let f=List.fold_left(List.merge compare)[]

我想我应该得到 42 的额外学分吗?

关于algorithm - Code Golf : combining multiple sorted lists into a single sorted list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/464960/

相关文章:

c - 对数组结构中的数据进行排序

c++ - 是否可以循环遍历文件中的一些数字并检查它们是否已排序,而不需要将它们读入 vector 然后检查 vector

c# - 用于创建数独板的蛮力算法

algorithm - 通用算法和数据结构列表

language-agnostic - 获取应用程序的路径

math - float 学有问题吗?

java - 二叉树的有序迭代器

在 R 中复制聚类过程

algorithm - 是否有动态规划方法来计算 k 最小生成树?

java - 使用运行时提供的属性动态对列表进行排序