【求助】如何使用vl-sort实现二维数组排序?
例如有以下数组(a1 b1) (a2 b2) (a3 b3) (a4 b4) (a5 b5)... (an bn)要实现的排序规则为:按an从大到小顺序排列,如果存在an相等的数组,则这些数组按bn从大到小排列。例如,一数组排序完成后为:(2 0) (5 5) (6 1) (6 4) (8 4) (9 3) (9 8) (9 9)
使用vl-sort函数实现
希望大家多帮忙,非常感谢!
(setq mylist ' ((2 0) (5 5) (6 1) (6 4) (8 4) (9 3) (9 8) (9 9))
(setq mylist
(vl-sort mylist
(function (lambda (e1 e2) (< (car e1) (car e2))))
)
) 第一行setq最后少个右括号 (vl-sort l '(lambda (a b) (if (= (car a) (car b)) (> (cadr a) (cadr b)) (> (car a) (car b))))) 阿然 发表于 2012-11-14 21:03 static/image/common/back.gif
(setq mylist ' ((2 0) (5 5) (6 1) (6 4) (8 4) (9 3) (9 8) (9 9))
(setq mylist
(vl-sort mylist
谢谢,但只实现了第一个元素的递增排序,我就是不知道怎么排第二个 Gu_xl 发表于 2012-11-14 21:11 static/image/common/back.gif
(vl-sort l '(lambda (a b) (if (= (car a) (car b)) (> (cadr a) (cadr b)) (> (car a) (car b)))))
太好了,非常感谢,lambda函数还是用不习惯啊 martinzyly 发表于 2012-11-19 10:10 static/image/common/back.gif
谢谢,但只实现了第一个元素的递增排序,我就是不知道怎么排第二个
超版那个可以连第二个一起排。
页:
[1]