シェーカーソート

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下に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



<戻る

Sample22.lzh


http://www.vector.co.jp/authors/VA015521/