我在方案中实现合并排序,我必须通过定义两个辅助方法来实现:合并和拆分。
Merge 需要两个列表(已经按升序排列)并将它们合并在一起。我这样做如下:
(define merge
(lambda (list1 list2)
(if (null? list1)
list2
(if (null? list2)
list1
(if (< (car list1) (car list2))
(cons (car list1) (merge (cdr list1) list2))
(cons (car list2) (merge (cdr list2) list1)))))))
拆分方法让我很难过。我找到了一个用两种不同的方法(“奇数”和“偶数”)完成此操作的示例,但我想知道是否有一种方法可以将它们组合成一个称为“拆分”的方法?
此处找到的示例:方案中的合并排序
我显然对计划很陌生,谁能帮我理解如何做到这一点?