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