masterlong 发表于 2022-9-19 15:34
73兄的代码看着费劲
执行效率比我的高
(setq aa (nth id a))
(setq bb (nth id b))
a,b都是被排序的表内的元素,放在这里处理意味着除首尾两个元素外,每一个元素会这样处理两次,因为第一次的b,下一次它会变成a
sortn里边提前对每一个元素进行了这样的处理
(mapcar'(lambda(x)(mapcar'(lambda(y)(nth y x))sorts))l)
另外,根据你的函数里边的思路,增加了容差,并修改为只排序指定的列,因为你这个更适用
是的
因为确实太费劲
开始没仔细看你的代码
你的处理方式很棒
根据优先级别先重置了多维点表和funs
这样后面的实际比较的过程中
只需要car和cdr
比nth要快很多 啊啊啊
影响速度的最主要因素不是nth
而是我写代码习惯用【'】来代替lambda
刚改成lambda又测试了一下
速度和73兄之前的那个版本几乎没有区别
多的一点点时间
是因为本身代码多一个fuzz的判断
不过73兄先重置的处理方式
应该还是有效果的
毕竟现在测试的多维表
子表长度都比较短
一旦很长的话就能体现出来了 lambda前要用function,不要用',编译后速度上还会更快 不就是图省事想少打几个字母么
没想到影响这么大 感谢大佬分享~ masterlong 发表于 2022-9-19 14:32
谢谢大哥,用你这个函数,放回的表正确
页:
1
[2]