Header
2020-02-28
2020-03-10

Rubyでバブルソートを行う

2020 02 28 b01daf398931c33c316e50c5cf1315f6 s

バブルソートとは

隣り合う要素の大小を比較し、要素をソートするアルゴリズムです。

大きい数字は常に右側に移行していきます。

Rubyで配列の要素を設定する場合は . sortメソッドがある為 通常利用するかというとそこまで利用はしません

Rubyでバブルソートを行う際のサンプルコード

できるだけRubyのメソッドを利用せず記載すると以下のような感じです。

def bubble_sort(ary)
  length = ary.length
  (1..length).each do  |i| 
    (1..(length-i)).each  do |jx| 
      jy = jx - 1 
      if ary[jy] > ary[jx]
        tmp = ary[jy]
        ary[jy] = ary[jx]
        ary[jx] = tmp
         p tmp
      end 
    end
  end
  return  ary
end
p bubble_sort([8,4,3,7,6,5,2,1])

出力結果

動きを追えるように、p tmpで処理を行っている数字を出力するようにしています。

8
8
8
8
8
8
8
4
7
7
7
7
6
6
6
5
5
4
4
3
3
2
[1, 2, 3, 4, 5, 6, 7, 8]

サンプルコードの出力結果の解説

最大値の8は左側の値と比べると常に大きくなるので、 8が一番右側にいくまで、処理が行われます。

1回目の処理が終了すると配列は以下

[4,3,7,6,5,2,1,8]

2回目は4が最大値になりますが、3と比較して処理が行われるので4は1回のみ処理が行われます。

2回目の処理が終了すると配列は以下

[3,4,7,6,5,2,1,8]

そ後7が処理され、続けて6が処理されてといった形です

参考記事

Rubyでバブルソート書いてみた

Rubyでバブルソートとマージソートを比較する

その他関連記事

Rubyで二分探索(バイナリサーチ)を行う

Rubyの練習問題:ファイル操作編|初心者・独学者向け入門コンテンツ

]Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ

[Rubyの資格試験|Ruby技術者認定試験 (Silver version 2.1)の解説と対策概要

paiza(パイザ)Cランク練習問題|5以上の整数の合計のRubyサンプルコードと解説

paiza(パイザ)Cランク練習問題|検索履歴のRubyサンプルコードと解説

前の記事
次の記事
人気記事
カテゴリーから記事を探す