IT Soldier Sakuri !!

Oracle使い。いつのまにかIT戦士になってしまったさくりの可哀想な奮闘記。

Rubyでソートを考える③選択ソート

今日はお母さんとディズニー・オン・アイスを観に行ってきました!
お母さんが遊んで遊んでとうるさいんだけど、
こんな暑いときに外を歩いたら倒れちゃうよ!と思ってたら、
会社で安くチケット販売していたので、涼しそうでちょうどいいかと思って。

思いの外、子供向けだったらしく2~6歳くらいの子供連れが多くて、
しかも大半の子がエルサの衣装を着てる!!可愛い♪
ショー自体はまぁまぁ。スケートじゃなくてもいいんじゃない?と思いつつ、
涼しいし、迫力もあって、テンポも良くて面白かった(๑•̀ㅂ•́)و✧
そのあと中華街の萬珍楼でごはんを食べて、元町をぶらぶらしてきました。
ミハマで靴を買ってもらっちゃった!
ちょっと背伸びな感じ(๑˃̵ᴗ˂̵)و



まだまだソートの勉強は続いてるよ!

今日は「選択ソート」でいこう!

選択ソートとは(処理方法)
要素の中から、最小値(または最大値)を探して配列の最初の要素と入れ替えるソート方法。
まず最小値を探して、1番目と交換。
次に2番目以降から最小値を探して、2番目と交換。
これを繰り返すことで、ソートが完成。

バブルソートに似てるなぁって思ってたら、バブルソートの改良版らしい。
ということは選択ソートの方がちょっと処理速度は高いはず。

では、選択ソートを書いてみよう。

# coding: windows-31j
#------------------------------
#挿入ソートをしてみる
#2015/08/22
#------------------------------

puts "英単語をabc順に並び替えるよ!!"
puts "英単語を何個でも入力してください。"
puts "最後はEnterだけの空行にしてください"

#配列
words = []

while word = gets.chomp
    break if word.empty?
    words << word
end

repeat = words.length

0.upto(repeat - 2) do |num1|
    min, s = words[num1], num1
    (num1 + 1).upto(repeat - 1) do |num2|
        if words[num2] < min
          min, s = words[num2], num2
        end
    end
    words[num1], words[s] = words[s], words[num1]
end

puts "並び替えが完了しました!"
puts words

だいぶソートに詳しくなってきた感じ?
でもそろそろ基本的なソートはもうやっちゃったから、難しいソートになりそう。
難しいのは…できない、かも…。