我在方案中有一个程序,它给我一个对的列表,我需要按对的第二个元素对该列表进行降序排序。像这样:
((1 . 1) (2 . 3) (3 . 2)) --> ((2 . 3) (3 . 2) (1 . 1))
((1 . 1) (x . 3) (2 . 1) (3 . 1)) --> ((x . 3) (1 . 1) (2 . 1) (3 . 1))
((1 . 3) (3 . 4) (2 . 2)) --> ((3 . 4) (1 . 3) (2 . 2))
我不知道应该如何使用排序。
只需使用内置的sort程序:
(define (sort-desc-by-second lst)
(sort lst
(lambda (x y) (> (cdr x) (cdr y)))))
(sort-desc-by-second '((1 . 1) (2 . 3) (3 . 2)))
=> '((2 . 3) (3 . 2) (1 . 1))
这里的技巧是传递给sort
适当的比较过程作为第二个参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)