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