我在Scheme中找到了这个代码:
(define zip
(lambda (leftList rightList)
(if (null? rightList)
leftList
(if (member (car rightList) leftList)
(zip leftList (cdr rightList))
(zip (append leftList (list (car rightList))) (cdr rightList))))))
=> (zip '(1 4) '(2 3))
(1 4 2 3)
但我想对结果进行排序:
=> (zip '(1 4) '(2 3))
(1 2 3 4)
答案 0 :(得分:1)
您正在寻找的功能不会被称为zip
;它被称为merge
。由于这是一个家庭作业问题,提供解决方案是不负责任的。我只能提供这个:
鉴于两个已经排序的列表,将它们组合成一个已排序的新列表的最简单方法是什么?好吧,每个列表中的第一件事(列表的car
)是其自己列表中的最小元素,因此通过比较它们,您可以知道哪一个是中最小的名单。然后,使用递归来合并剩余的内容。