まくまくRubyノート
配列をソートする(昇順ソート/降順ソート)(sort)
2011-10-30

昇順ソート

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]

破壊メソッドをチェーンして実行するときは、上記のように sortreverse の両方にびっくりマーク ! を付けることに注意してください。

参考

2011-10-30