第15講 データの並び換え
第6話 隣項交換繰り返し法とは?
隣項交換繰り返し法とは、すべての隣項について、
隣項が昇順になっていないときに交換することを、
並び換えが成功するまで繰り返す方法です。
4,7,6,3,5
を例に具体的に説明します。
4,7,6,3,5
最初の隣項にスポットライトを当てます。
昇順でないときには交換しますが、
今回は昇順になっていますので、
何もしません。
4,7,6,3,5
次の隣項に焦点を当てます。
4,
7,6,3,5
今回は昇順になっていないので交換します。
4,6,7,3,5
スポットライトは次に移ります。
4,6,
7,3,5
今回も昇順になっていませんから交換します。
4,6,3,7,5
最後の隣項に焦点を移します。
4,6,3,
7,5
今回も昇順になっていませんので、交換します。
4,6,3,5,7
残念ながら、グループ全体は昇順になっていません。
ですので、1巡目と同じことを繰り返します。
4,6,3,5,7
昇順になっていますので何もしません。
4,6,3,5,7
4,
6,3,5,7
昇順になっていませんので交換します。
4,3,6,5,7
4,3,6,5,7
昇順になっていませんから交換します。
4,3,5,6,7
4,3,5,
6,7
昇順ですから何もしません。
4,3,5,6,7
2巡目が終わりましたが、
残念がならまだ並び換えに成功していません。
3順目に入ります。
4,3,5,6,7
昇順ではありませんから交換します。
3,4,5,6,7
3,
4,5,6,7
昇順ですから何もしません。
3,4,5,6,7
3,4,
5,6,7
今回も昇順ですから何もしません。
3,4,5,6,7
3,4,5,6,7
昇順で何もしません。
3,4,5,6,7
これで3巡目が終了しました。
この時点で実は並び換えに成功していますが、
コンピュータは並び換えが成功したかどうかは、
判断できません。
4巡目を行い、交換が1回も発生しないことによって、
コンピュータは成功したことを判断することが出来ます。


では、皆さん前話の
参考ダウンロード添付ファイル

Sub g1(a() As Integer)

  Dim i As Integer, j As Integer, min As Integer, jk As Integer, w As Integer
  
  For i = 0 To 3
    min = 100
    For j = i To 4
      If min > a(j) Then
        min = a(j)
        jk = j
      End If
    Next
    w = a(i)
    a(i) = a(jk)
    a(jk) = w
  Next
  
End Sub

Sub g2(a() As Integer)

  Dim i As Integer, j As Integer, max As Integer, jk As Integer, w As Integer
  
  For i = 0 To 3
    max = 0
    For j = i To 4
      If max < a(j) Then
        max = a(j)
        jk = j
      End If
    Next
    w = a(i)
    a(i) = a(jk)
    a(jk) = w
  Next

End Sub
を隣項交換繰り返し法に変更して下さい。


第5話へ 第7話へ
004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ