You are on page 1of 3

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.

Click
Dim i, size As Integer
Dim array(1) As Integer
Dim full As String = ""
size = InputBox("Enter the amount of numbers you wish to input/the size of the
array")
ReDim array(size - 1)
For i = 0 To size - 1
array(i) = InputBox("Type in a whole number")
full = full + array(i).ToString + " "
Next
ListBox1.Items.Add("Here is the " & size & " inputed numbers: " & full)
'displays all numbs on listbox
mergesort(array, 0, (size - 1))
' calls mergesort
full = ""
' resets 'full'
For i = 0 To size - 1
full = full + array(i).ToString + " "
Next
ListBox1.Items.Add("Here is the sorted array: " & full)
End Sub
Sub mergesort(arr() As Integer, l As Integer, r As Integer) 'l is left
index, r is right index
If (l < r) Then ' slits into
subarrays to make sorting easier and faster
Dim middle As Integer ' like a divide
and conqour algorithm
middle = (l + (r - 1)) / 2
mergesort(arr, l, middle)
mergesort(arr, (middle + 1), r)
merge(arr, l, middle, r)
End If
End Sub
Sub merge(arr() As Integer, l As Integer, middle As Integer, r As Integer)
'to merge the two subarrays
Dim i, j, k As Integer
Dim n1 As Integer = middle - l + 1
Dim n2 As Integer = r - middle
Dim Le(n1), Ri(n2) As Integer ' temp arrays
For i = 0 To n1 ' copys data to temp arrays 'Le' and 'Ri'
Le(i) = arr(l + i)
Next
For j = 0 To (n2 - 1)
' added -1 to 'n2' to make code work
Ri(j) = arr(middle + 1 + j)
Next
i = 0 ' initial index of first subarray
j = 0 ' initial index of second subarray
k = l ' initial index of merged subarray
While (i < n1 And j < n2)
If (Le(i) <= Ri(j)) Then
arr(k) = Le(i)
i = i + 1
Else
arr(k) = Ri(j)
j = j + 1
End If
k = k + 1
End While
While (i < n1) ' copy remaining elements of 'Le'
arr(k) = Le(i)
i = i + 1
k = k + 1
End While
While (j < n2) ' copy remaining elements of 'Ri'
arr(k) = Ri(j)
j = j + 1
k = k + 1
End While
End Sub

You might also like