バブルソートは時間がかかる
quick sortはササッと書くのは難しい
ので選択ソート
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Public Function SelectSort(Ary As Variant) As Variant 'Dim Ary 'Ary = Array("0", "1", "1", "2", "900", "888") Dim I As Long, j As Long Dim Min As Long, flag As Long Dim newA As String, newB As String, Mark As Long For I = 0 To UBound(Ary) - 1 flag = CLng(Ary(I)) Min = CLng(Ary(I)) Mark = I For j = 1 To UBound(Ary) - I If Min > CLng(Ary(I + j)) Then Min = CLng(Ary(I + j)) Mark = I + j End If Next j newA = CStr(Min) newB = CStr(flag) If Not Mark = I Then Ary(I) = newA Ary(Mark) = newB End If Next I 'For I = 0 To UBound(Ary) ' Debug.Print Ary(I) 'Next SelectSort = Ary End Function |
こんな感じで