Option Explicit
Sub main()
'WordVBAでマージソート実装例
On Error GoTo E
Dim c1 As New Collection
Dim c2 As New Collection
Dim o
c1.Add "ken", "1"
c1.Add "joe", "2"
c1.Add "acep", "3"
c1.Add "bob", "11"
c1.Add "zen", "5"
c1.Add "asu", "6"
Set c2 = msort(c1)
For Each o In c2
Debug.Print o
Next
MsgBox "ok"
E:
Set c1 = Nothing
Set c2 = Nothing
End Sub
Function msort(c As Collection) As Collection
Dim cL1 As New Collection
Dim cL2 As New Collection
Dim cr1 As New Collection
Dim cr2 As New Collection
Dim resC As New Collection
Dim m As Long
Dim m2 As Long
Dim i
Dim lp, rp, p
Dim lmax, rmax
m = c.Count
If m = 0 Then
'何もしない
ElseIf m = 1 Then
resC.Add c(1)
Else
m = m - 1
m2 = m \ 2
p = 1
For i = 0 To m2
cL1.Add c(i + 1)
Next
p = 1
For i = m2 + 1 To m
cr1.Add c(i + 1)
Next
Set cL2 = msort(cL1)
Set cr2 = msort(cr1)
lmax = cL2.Count
rmax = cr2.Count
lp = 1
rp = 1
While lp <= lmax Or rp <= rmax
If lp > lmax Then
resC.Add cr2(rp)
rp = rp + 1
ElseIf rp > rmax Then
resC.Add cL2(lp)
lp = lp + 1
Else
If cL2(lp) > cr2(rp) Then
resC.Add cr2(rp)
rp = rp + 1
Else
resC.Add cL2(lp)
lp = lp + 1
End If
End If
p = p + 1
Wend
End If
Set cL1 = Nothing
Set cL2 = Nothing
Set cr1 = Nothing
Set cr2 = Nothing
Set msort = resC
End Function
T3B0aW9uIEV4cGxpY2l0CgpTdWIgbWFpbigpCifvvLfvvY/vvZLvvYTvvLbvvKLvvKHjgafjg57jg7zjgrjjgr3jg7zjg4jlrp/oo4XkvosKCgpPbiBFcnJvciBHb1RvIEUKRGltIGMxIEFzIE5ldyBDb2xsZWN0aW9uCkRpbSBjMiBBcyBOZXcgQ29sbGVjdGlvbgpEaW0gbwpjMS5BZGQgImtlbiIsICIxIgpjMS5BZGQgImpvZSIsICIyIgpjMS5BZGQgImFjZXAiLCAiMyIKYzEuQWRkICJib2IiLCAiMTEiCmMxLkFkZCAiemVuIiwgIjUiCmMxLkFkZCAiYXN1IiwgIjYiCgpTZXQgYzIgPSBtc29ydChjMSkKRm9yIEVhY2ggbyBJbiBjMgogICAgRGVidWcuUHJpbnQgbwpOZXh0Ck1zZ0JveCAib2siCkU6ClNldCBjMSA9IE5vdGhpbmcKU2V0IGMyID0gTm90aGluZwpFbmQgU3ViCgpGdW5jdGlvbiBtc29ydChjIEFzIENvbGxlY3Rpb24pIEFzIENvbGxlY3Rpb24KRGltIGNMMSBBcyBOZXcgQ29sbGVjdGlvbgpEaW0gY0wyIEFzIE5ldyBDb2xsZWN0aW9uCkRpbSBjcjEgQXMgTmV3IENvbGxlY3Rpb24KRGltIGNyMiBBcyBOZXcgQ29sbGVjdGlvbgpEaW0gcmVzQyBBcyBOZXcgQ29sbGVjdGlvbgpEaW0gbSBBcyBMb25nCkRpbSBtMiBBcyBMb25nCkRpbSBpCkRpbSBscCwgcnAsIHAKRGltIGxtYXgsIHJtYXgKCm0gPSBjLkNvdW50CklmIG0gPSAwIFRoZW4KICAgICfkvZXjgoLjgZfjgarjgYQKRWxzZUlmIG0gPSAxIFRoZW4KICAgIHJlc0MuQWRkIGMoMSkKRWxzZQogICAgbSA9IG0gLSAxCiAgICBtMiA9IG0gXCAyCiAgICBwID0gMQogICAgRm9yIGkgPSAwIFRvIG0yCiAgICAgICAgY0wxLkFkZCBjKGkgKyAxKQogICAgTmV4dAogICAgcCA9IDEKICAgIEZvciBpID0gbTIgKyAxIFRvIG0KICAgICAgICBjcjEuQWRkIGMoaSArIDEpCiAgICBOZXh0CiAgICBTZXQgY0wyID0gbXNvcnQoY0wxKQogICAgU2V0IGNyMiA9IG1zb3J0KGNyMSkKICAgIGxtYXggPSBjTDIuQ291bnQKICAgIHJtYXggPSBjcjIuQ291bnQKICAgIGxwID0gMQogICAgcnAgPSAxCiAgICBXaGlsZSBscCA8PSBsbWF4IE9yIHJwIDw9IHJtYXgKICAgICAgICBJZiBscCA+IGxtYXggVGhlbgogICAgICAgICAgICByZXNDLkFkZCBjcjIocnApCiAgICAgICAgICAgIHJwID0gcnAgKyAxCiAgICAgICAgRWxzZUlmIHJwID4gcm1heCBUaGVuCiAgICAgICAgICAgIHJlc0MuQWRkIGNMMihscCkKICAgICAgICAgICAgbHAgPSBscCArIDEKICAgICAgICBFbHNlCiAgICAgICAgICAgIElmIGNMMihscCkgPiBjcjIocnApIFRoZW4KICAgICAgICAgICAgICAgIHJlc0MuQWRkIGNyMihycCkKICAgICAgICAgICAgICAgIHJwID0gcnAgKyAxCiAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgIHJlc0MuQWRkIGNMMihscCkKICAgICAgICAgICAgICAgIGxwID0gbHAgKyAxCiAgICAgICAgICAgIEVuZCBJZgogICAgICAgIEVuZCBJZgogICAgICAgIHAgPSBwICsgMQogICAgV2VuZApFbmQgSWYKClNldCBjTDEgPSBOb3RoaW5nClNldCBjTDIgPSBOb3RoaW5nClNldCBjcjEgPSBOb3RoaW5nClNldCBjcjIgPSBOb3RoaW5nClNldCBtc29ydCA9IHJlc0MKCkVuZCBGdW5jdGlvbg==
Visual Basic.Net Compiler version 0.0.0.5943 (Mono 4.0.1 - tarball)
Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
/home/nx54jA/prog.vb (3,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (7,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (8,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (9,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (10,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (11,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (12,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (13,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (14,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (15,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (16,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (18,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (19,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (20,10) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (21,5) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (22,7) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (23,2) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (24,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (25,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (26,8) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (28,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (29,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (30,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (31,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (32,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (33,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (34,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (35,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (36,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (37,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (38,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (40,2) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (41,3) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (43,7) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (44,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (45,5) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (46,6) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (47,7) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (48,6) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (49,8) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (50,12) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (51,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (52,6) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (53,8) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (54,12) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (55,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (56,8) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (57,8) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (58,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (59,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (60,7) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (61,7) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (62,10) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (63,11) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (64,17) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (65,15) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (66,15) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (67,17) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (68,15) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (69,13) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (70,15) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (71,21) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (72,19) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (73,17) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (74,21) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (75,19) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (76,19) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (77,15) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (78,10) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (79,9) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (80,7) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (82,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (83,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (84,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (85,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (86,4) : error VBNC30203: Identifier expected.
/home/nx54jA/prog.vb (88,13) : error VBNC30203: Identifier expected.
There were 77 errors and 0 warnings.
Compilation took 00:00:00.2586500