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