45 lines
912 B
VB.net
45 lines
912 B
VB.net
'Solution derived from http://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/.
|
|
|
|
'build an unsorted array with n elements
|
|
Function build_unsort(n)
|
|
flag = Array("red","white","blue")
|
|
Set random = CreateObject("System.Random")
|
|
Dim arr()
|
|
ReDim arr(n)
|
|
For i = 0 To n
|
|
arr(i) = flag(random.Next_2(0,3))
|
|
Next
|
|
build_unsort = arr
|
|
End Function
|
|
|
|
'sort routine
|
|
Function sort(arr)
|
|
lo = 0
|
|
mi = 0
|
|
hi = UBound(arr)
|
|
Do While mi <= hi
|
|
Select Case arr(mi)
|
|
Case "red"
|
|
tmp = arr(lo)
|
|
arr(lo) = arr(mi)
|
|
arr(mi) = tmp
|
|
lo = lo + 1
|
|
mi = mi + 1
|
|
Case "white"
|
|
mi = mi + 1
|
|
Case "blue"
|
|
tmp = arr(mi)
|
|
arr(mi) = arr(hi)
|
|
arr(hi) = tmp
|
|
hi = hi - 1
|
|
End Select
|
|
Loop
|
|
sort = Join(arr,",")
|
|
End Function
|
|
|
|
unsort = build_unsort(11)
|
|
WScript.StdOut.Write "Unsorted: " & Join(unsort,",")
|
|
WScript.StdOut.WriteLine
|
|
WScript.StdOut.Write "Sorted: " & sort(unsort)
|
|
WScript.StdOut.WriteLine
|