我有四倍的有限列表,比如
(list (list 1 3 5 5) (list 2 3 4 9) (list 3 4 4 6)(list 4 7 10 3)).
每个元素由(a1 a2 a3 a4)表示。 我写了一个提供上面列表的代码,我已经停止了 因为我不知道如何继续。我想写一个排序功能 这提供了一个"增加"列表根据以下内容创建 标准:
我请求你的帮助。谢谢。黛比。 我不能包含我的代码,因为在这个地方不接受它。
答案 0 :(得分:0)
我写了一个似乎做你想要的谓词。您可以将其插入此mergesort
以便工作。
(define <quad
(lambda (l1 l2)
(let
([l1a2 (cadr l1)]
[l1a3 (caddr l1)]
[l1a3 (cadddr l1)]
[l2a2 (cadr l2)]
[l2a3 (caddr l2)]
[l2a3 (cadddr l2)])
(cond
[(< l1a2 l2a2) #t]
[(< (- l1a3 l1a4) (- l2a3 l2a4)) #t]
[(< l1a3 l2a3) #t]))))
如果你将它传递给谓词参数,你的排序应该可以正常工作:
(merge-sort <quad '((2 3 4 5) (1 2 3 4))) => ((1 2 3 4) (2 3 4 5))