2011-08-15 51 views
1

對這個表進行排序的最簡單的ruby代碼是什麼?因此在第一列 按升序排序,而在第二列按降序排序用一個以上的標準對二維數組排序

matrix = [ [1,1], 
      [2,1], 
      [2,4], 
      [2,3], 
      [2,2], 
      [3,1], 
      [4,2], 
      [4,3], 
      [4,4], 
      [1,4], 
      [1,3], 
      [1,2], 
      [3,2], 
      [3,4], 
      [3,3], 
      [4,1] ] 

結果表應該是:

[[1,4], 
[1,3], 
[1,2], 
[1,1], 
[2,4], 
[2,3], 
[2,2], 
[2,1], 
[3,4], 
[3,3], 
[3,2], 
[3,1], 
[4,4], 
[4,3], 
[4,2], 
[4,1] ] 

任何幫助表示讚賞, 特德

+0

[按數字排序對象集合(最高優先),然後按字母排序(按字母順序排列)](http://stackoverflow.com/questions/2232470/sort-a-collection-of-objects-by-數字最高優先字母后綴) –

回答

4
matrix.sort_by {|e| [e[0], -e[1]]} 

我認爲這是最簡單的,但根據docs,當鍵集很簡單時,它可能非常昂貴。

+4

展開塊參數:matrix.sort_by {| x,y | [x,-y]} – tokland