スキームでマージソートを実装していますが、マージとスプリットの 2 つのヘルパー メソッドを定義する必要があります。
Merge は 2 つのリスト (既に昇順になっています) を取り、それらをマージします。私は次のようにこれを行いました:
(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)))))))
ただし、分割方法には困惑しています。2 つの別々の方法 (「奇数」と「偶数」) でこれを実現する例を見つけましたが、これらを「分割」と呼ばれる 1 つの方法に結合する方法があるかどうか疑問に思っていました。
ここにある例:スキーム内のマージソート
私は明らかにスキームにまったく慣れていません。これを行う方法を理解するのを手伝ってくれる人はいますか?