単純選択ソート

最小の値を選択して、先頭から順番に交換していく。
計算量はO(n^2)。

離れた要素の交換が発生する可能性があるため
安定ではない

def selectionsort!(array)
  0.step(array.size - 1, 1) do |head|
    indexOfMin = array.size - 1
    (array.size - 1).step(head, -1) do |i|
      if array[i] < array[indexOfMin] then
        indexOfMin = i
      end
    end
    tmp = array[head]
    array[head] = array[indexOfMin]
    array[indexOfMin] = tmp
  end
end

data = Array.new
while input = $stdin.gets.to_i
  break if input < 0
  data << input
end

p data
selectionsort!(data)
p data