Re: [问题] 矩阵元的提取与计算

楼主: LPH66 (-6.2598534e+18f)   2013-07-29 19:33:16
※ 引述《a29788685 (嘉峰)》之铭言:
: 2)Sort[{{a, 2, 4}, {c, 1, 4}, {d, 3, 5},{b,2,3}}, #1[[2]] < #2[[2]] &]
: 可以帮我排序第二个数字,但如果我想要排序第二个及第三个数字:
: {c, 1, 4},{b,2,3},{a, 2, 4},{d, 3, 5}
: 当第二个数字一样时,选取第三个数字的大小排序,
: 不知道该怎么作呢?
我想这要讲一下 Sort 的第二个参数的意义了
这个参数是所谓的"定序函数"
在排序时它会被传入两个参数 (在纯函式上就是 #1 跟 #2)
当函数回传 True 时表示 #1 要在 #2 前面
所以你的问题 要写成"定序函数"的逻辑的话就是
"当第二数字相同时第三数字小的在前,否则第二数字小的在前"
也就是 If[#1[[2]]==#2[[2]], #1[[3]]<#2[[3]], #1[[2]]<#2[[2]] ]&
更多的条件可以依此类推
作者: chungyuandye (养花种鱼数月亮赏星星)   2013-07-29 19:46:00
7.0之后有个SortByA={{c,1,4},{b,2,3},{a,2,4},{d,3,5}}SortBy[A,{#[[2]],#[[3]]}&]
作者: jurian0101 (Hysterisis)   2013-07-31 09:53:00
两两带入比对,这样不就变成O(n^2)
楼主: LPH66 (-6.2598534e+18f)   2013-08-03 18:13:00
所以排序算法从来没有一定要两两代入比对啊也就是说这个排序函数必须自己要是个全序关系才行
作者: a29788685 (嘉峰)   2013-09-30 00:18:00
thanks!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com