第15講 データの並び換え
第7話 隣項交換繰り返し法マクロ
を実現するプログラム例
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桁以内にして、
時間を計測して下さい。
実は、差は歴然です。
上は速い方の結果です。
皆さん実験して下さい。
どのぐらい違いのでしょうか。
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入門へ
本サイトトップへ