--- sort_by {|item| ... }   ruby 1.7 feature

    ֥åɾ̤ <=> ᥽åɤӤ뤳Ȥǡself 
    ˥ȤޤȤ줿򿷤֤ޤϡ
    ʲȤۤƱư򤷤ޤ

      class Array
        def sort_by
          self.collect {|i| [yield(i), i] }.
             sort {|a,b| a[0] <=> b[0] }.
             collect! {|i| i[1]}
        end
      end

    sort_by ȤʤʲǤӤԤ٤ downcase 
    Ԥޤä downcase μ¹®٤٤ sort ®٤
    ̿Ū㲼ޤ

      p ["BAR", "FOO", "bar", "foo"].sort {|a,b| a.downcase <=> b.downcase }

    Τ褦 sort_by Ȥ downcase μ¹Բǿ
    ƱǤĤޤꡢʬμ¹Ի֤ O(n) ΥǤ

      p ["BAR", "FOO", "bar", "foo"].sort_by {|v| v.downcase }

    ʲΡ¹Բθڷ̤򻲾ȤƤߤƤ

      class Integer
        def count
          $n += 1
          self
        end
      end

      ary = []
      1.upto(1000) {|v| ary << rand(v) }

      $n = 0
      ary.sort {|a,b| a.count <=> b.count }
      p $n          # => 18200

      $n = 0
      ary.sort_by {|v| v.count }
      p $n          # => 1000

    Enumerable#sort_by ϰǤϤޤ (unstable sort)

     ӷ̤ƱǤϸν̤¤֥Ȥ
    ְʥ (stable sort)פȸޤ

    ʤsort_by ʲΤ褦˻ȤȰʥȤǤޤ

      i = 0
      ary.sort_by {|v| [v, i += 1] }

