实现一种算法,将任意数量的排序列表合并为一个排序列表。目的是用您喜欢的任何语言创建最小的工作程序。
例如:
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!
除此之外,您的算法应该(但不一定)快得多!
清楚地说明语言、任何弱点和字数。只在计数中包含有意义的字符,但出于艺术/可读性目的,可以随意在代码中添加空格。
为了保持整洁,建议改进评论或在适当的地方编辑答案,而不是为每个“修订”创建一个新答案。
编辑:如果我再次提交此问题,我会将“未提供语言排序”规则扩展为“不要连接所有列表然后对结果进行排序”。执行先连接后排序的现有条目实际上非常有趣且紧凑,因此我不会主动引入它们违反的规则,但请随意在新提交的规范中使用更严格的规范。
最佳答案
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/