単純選択ソート
最小の値を選択して、先頭から順番に交換していく。
計算量は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