Array#sort
メソッドは、デフォルトで昇順ソートを行います。
下記のコードでは、自分自身の配列を書き換えるために !
を付けて sort
を実行しています。
arr = [2, 5, 1, 3, 4]
arr.sort!
p arr #=> [1, 2, 3, 4, 5]
Array#sort
にソートロジックを表すコードを渡すことで、ソート方法をカスタマイズすることができます。
下記の例では、降順ソートを行っています。
arr.sort! {|x,y| y<=>x}
実は、上記のようにするよりは、単純に昇順ソートしてから、逆順に並べ替えた方がずっと高速だったりします。
arr.sort!.reverse!
p arr #=> [5, 4, 3, 2, 1]
破壊メソッドをチェーンして実行するときは、上記のように sort
と reverse
の両方にびっくりマーク !
を付けることに注意してください。