シェーカーソート
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下にLZHとしてあります
Option Explicit 'バブルソートより速いシェーカーソートを使います Const TEXTBOXCOUNT = 4 'TextBox1の配列の最大添字値 Dim Buf(TEXTBOXCOUNT) As Long '乱数が入る変数 '乱数のセット Private Sub Command1_Click() Dim j As Integer '0〜100までの乱数を代入 For j = 0 To TEXTBOXCOUNT Buf(j) = Int(Rnd * 101) Next 'Buf変数をText1に表示 For j = 0 To TEXTBOXCOUNT Text1(j).Text = Buf(j) Next End Sub 'シェーカーソートをする Private Sub Command2_Click() Dim j As Integer ShakerSort Buf 'シェーカーソートを実行 '結果をText2に表示 For j = 0 To TEXTBOXCOUNT Text2(j).Text = Buf(j) Next End Sub Private Sub Form_Load() Command1_Click 'フォームロード時に乱数をセット End Sub 'シェーカーソート関数 Sub ShakerSort(ByRef X() As Long) Dim k, jM, jL, jR, Dummy jL = 0 jR = TEXTBOXCOUNT - 1 Do While jL < jR For k = jL To jR If X(k) > X(k + 1) Then Dummy = X(k) X(k) = X(k + 1) X(k + 1) = Dummy jM = k End If Next jR = jM For k = jR To jL + 1 Step -1 If X(k) < X(k - 1) Then Dummy = X(k) X(k) = X(k - 1) X(k - 1) = Dummy jM = k End If Next jL = jM Loop End Sub |