2014-03-07 195 views
2

我有一個數組:如何按降序排列數組?

a = [ 0,9,6,12,1] 

我需要一種方式把它按降序排序:

a = [12,9,6,1,0] 

按升序順序排序我有一個Ruby的功能a[].to_a.sort, 我在尋找一個按降序對數組進行排序的函數。

+0

我很困惑。我不會驚訝地發現這個問題是重複的,但不是「顛倒數組的順序」。我錯過了什麼嗎? –

+0

您可以按如下降序排序任何數組'a'(不僅僅是那些元素是數字的數組):'a.sort {| x,y | - (x <=> y)}'。 (另外:你說的是'a [] .to_a.sort',你只需要'a.sort'。) –

回答

10

做如下

a = [ 0,9,6,12,1] 
sorted_ary = a.sort_by { |number| -number } 
# or 
sorted_ary = a.sort.reverse 

更新

另一個好辦法做到這一點:

a.sort {|x,y| -(x <=> y)} 
+4

只需要注意,後一種形式比前者快,應該是首選。 – toro2k

+0

@ toro2k我同意你200%.. :) –

+0

@rakshit:我必須排序形式爲十六進制數字= [0x1,0x2,0x7] – anurag

0

你可以這樣做:

[ 0,9,6,12,1].sort_by do |sort| 
    -sort 
end