■
[ruby]Rubyの基礎から勉強してみるよ Part2
前回の続き
sortメソッドを使わずに問題を解いてみる。
好きな数だけ単語の入力をしてもらい(1行に1単語、最後はEnterだけの空行)、アルファベット順に並べ変えて出力するようなプログラムを書いてみましょう
バブルソートでの回答
a = [] puts "好きな文字を半角英数字で入力してください,最後に何も入力せずにEnterをタイプすると入力した文字がソートされて表示されます。" while true print "好きな文字をどうぞ>" input_str = gets #chompをしないと下のif文でEnterのみの場合に空文字と評価されない #ちょっとはまった input_str.chomp! if input_str != "" #配列の末尾に追加する a << input_str else puts "エンターがタイプされました。\n今までに入力した文字をアルファベット順にソートして表示してみます。" break end end #バブルソート flag = nil begin i = 0 flag = false while i < a.size - 1 if a[i] > a[i+1] flag = true j = a[i] a[i] = a[i+1] a[i+1] = j end i = i + 1 end end while(flag) a.each do |i| puts i end
バブルソートのコードはこちらを参考にしてみました。
この問題を解く事によって配列の扱いやループの種類、またソートアルゴリズムについて勉強になりました。
問題を調べて解くってかなり勉強になりますね。