#!/usr/koeki/bin/ruby # coding: utf-8 def qsort(data) # 配列を受け取る if data.length <= 1 # データが1個以下なら data # そのものを返して並べ換え完了 else left = Array.new # left(左側配列)を新規作成 right = Array.new # right(右側配列)を新規作成 k = data.shift # 変数dataの先頭を取り出してkにする for x in data # 残ったdata全てに対して繰り返す if x < k # kより小さかったら left << x # 左側に追加 else right << x # 右側に追加 end end # 繰り返し終わり # qsort(left)の末尾にkを足し、さらにqsort(right)を結合 qsort(left).push(k) + qsort(right) end end def readNumArray() ary = [] while line=gets # 入力が続く間 datum = line.chomp!.to_i # 整数に直して ary.push(datum) # aryに追加していく end ary # 最後にaryを呼び主に返す end def printArray(a) printf("[%s]\n", a.join(", ")) end ary = readNumArray() puts "整列前:" printArray(ary) puts "整列後:" printArray(qsort(ary))