選択ソート(selection sort)

配列の中から最大値(or 最小値)を探し、最後の要素と入れ換えていく。
これはサクッと実装できた。

def selection_sort(list)
  dup = list.dup
  (dup.length - 1).downto(0) {|limit|
    pos = 0
    0.upto(limit) {|i| pos = i if dup[i] > dup[pos] }
    tmp = dup[limit]
    dup[limit] = dup[pos]
    dup[pos] = tmp
  }
  dup
end