' SHELL SORT
'Written by Sanchit Karve AKA born2c0de
'born2c0de AT hotmail DOT com
'Translated to .net by Margus Martsepp AKA m2s87
Sub shellsort(ByRef A() As Integer, ByVal max As Integer)
Dim stopp%, swap%, limit%, temp%, k%
Dim x As Integer = Int((max / 2) - 1)
Do While x > 0
stopp = 0
limit = max - x
Do While stopp = 0
swap = 0
For k = 0 To limit
If A(k) > A(k + x) Then
temp = A(k)
A(k) = A(k + x)
A(k + x) = temp
swap = k
End If
Next k
limit = swap - x
If swap = 0 Then stopp = 1
Loop
x = Int(x / 2)
Loop
End Sub
Sub Main()
Dim I As Integer
Dim x() As Integer = {5, 2, 4, 6, 1, 3}
Console.WriteLine("Unsorted Array:")
For I = 0 To x.GetUpperBound(0)
Console.Write("{0} ", x(I))
Next I
shellsort(x, x.GetUpperBound(0))
Console.WriteLine("{0}SORTED ARRAY:", Chr(10))
For I = 0 To x.GetUpperBound(0)
Console.Write("{0} ", x(I))
Next I
End Sub