どうやるんだっけ? と思って直ぐに思いつかなった。 str = %w(9 7 5 8 4 6 1 3 2) # 昇順 p str.sort # 降順 p str.sort{|a, b| -(a <=> b)} 「数値じゃないとマイナス付けられない!」とか思い始めると、割とハマるようです。 計算量が気になるので、sort_byでスマートにやる方法があるといいな。 追記 教えてもらいました。ありがとうございます。 irb(main):001:0> str = %w(9 7 5 8 4 6 1 3 2) => ["9", "7", "5", "8", "4", "6", "1", "3", "2"] irb(main):002:0> str.sort.reverse => ["9", "8", "7", "6", "5", "4", "3", "2", "1"] irb(main):003:0>