'===========================================================
'downShelSort 指定された配列の整数をシェルソート
' (改良挿入法)でソートする−降順ソート
'---------引数----------------------------------------------
'data() ここのデータをソートする
'Count 要素の数
'===========================================================
Public Sub downShelSort(data() As Integer, Count As Integer)
Dim i As Integer, j As Integer, k As Integer
Dim temp As Integer
Dim gap As Integer '数列のとび
gap = Count \ 2 'とびの初期値
'とびが1のとき、普通の基本挿入法
Do While gap > 0
'数列番号−0からgapまで
k = 0
Do While k < gap
'数列kの要素と比べる最初の要素
j = k + gap
'数列kに挿入していく
Do While j < Count '配列数まで
'まず数列kの右端の要素と比べる
i = j - gap
Do While i >= k '数列kの最初の要素まで
If data(i + gap) > data(i) Then
temp = data(i + gap)
data(i + gap) = data(i)
data(i) = temp
Else
Exit Do
End If
'1つずつ左にずれる
i = i - gap
Loop
'1つずつ右にずれる
j = j + gap
Loop
'次の数列に
k = k + 1
Loop
'とびの変更
gap = gap \ 2
Loop
End Sub
|