第15講 データの並び換え
第7話 隣項交換繰り返し法マクロ
mnfe
を実現するプログラム例
Private Sub CommandButton1_Click()

  CommandButton2_Click
  Dim a(200) As Integer, b(200) As Integer, c(200) As Integer
  Call f(a(), b(), c()) 'データ発生
  Call h(a(), 4) 'データ表示
  Call g1(b()) '昇順並び換え
  Call h(b(), 5) 'データ表示
  Call g2(c()) '昇順並び換え
  Call h(c(), 6) 'データ表示
  
End Sub

Sub f(a() As Integer, b() As Integer, c() As Integer)
  
  Dim i As Integer
  For i = 0 To 4
    a(i) = Int(100 * Rnd)
    b(i) = a(i)
    c(i) = a(i)
  Next
  
End Sub

Sub g1(a() As Integer)

  Dim i As Integer, cn As Integer, w As Integer
  
  Do While 1
    cn = 0
    For i = 0 To 3
      If a(i) > a(i + 1) Then
        w = a(i)
        a(i) = a(i + 1)
        a(i + 1) = w
        cn = cn + 1
      End If
    Next
    If cn = 0 Then Exit Do
  Loop
  
End Sub

Sub g2(a() As Integer)

  Dim i As Integer, cn As Integer, w As Integer
  
  Do While 1
    cn = 0
    For i = 0 To 3
      If a(i) < a(i + 1) Then
        w = a(i)
        a(i) = a(i + 1)
        a(i + 1) = w
        cn = cn + 1
      End If
    Next
    If cn = 0 Then Exit Do
  Loop
End Sub

Sub h(a() As Integer, n As Integer)

  Dim i As Integer
  For i = 0 To 4
    Cells(n, 1 + i) = a(i)
  Next
  
End Sub

Private Sub CommandButton2_Click()
  
  Rows("4:20000").Select
  Selection.ClearContents
  Cells(1, 1).Select
  
End Sub
参考ダウンロード添付ファイル

では、どちらの方法の方が速いのか実験することにしましょう。
データ数が5個程度では、
差は出ませんので、
まず、両マクロをデータ数10000個、桁数4桁以内にして、
時間を計測して下さい。
258
456
951
実は、差は歴然です。
上は速い方の結果です。
皆さん実験して下さい。
どのぐらい違いのでしょうか。

第6話へ 第8話へ
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入門へ
本サイトトップへ