' 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
本文提供了一个使用Visual Basic .NET实现的Shell排序算法示例。通过逐步调整数组元素的位置来提高插入排序的效率,展示了如何通过减少比较次数和交换次数来优化排序过程。
697

被折叠的 条评论
为什么被折叠?



