压缩和排序问题

时间:2010-11-10 07:57:52

标签: sorting scheme

我在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)

1 个答案:

答案 0 :(得分:1)

您正在寻找的功能不会被称为zip;它被称为merge。由于这是一个家庭作业问题,提供解决方案是不负责任的。我只能提供这个:

鉴于两个已经排序的列表,将它们组合成一个已排序的新列表的最简单方法是什么?好吧,每个列表中的第一件事(列表的car)是其自己列表中的最小元素,因此通过比较它们,您可以知道哪一个是中最小的名单。然后,使用递归来合并剩余的内容。