'插入排序
Option Explicit
Dim Result, I
Dim TestData(100)
const N = 100
Randomize
For I = 0 To N - 1
TestData(I) = ROUND(RND() * 32768)
Next
'插入排序
Sub ISort(byRef Array, low, hi)
Dim i, j, t
For i = low+1 To hi
t = Array(i)
j = i - 1
Do
If j < low Then
Exit Do
End If
If Array(j) > t Then
Array(j+1) = Array(j)
j = j - 1
Else
Exit Do
End If
Loop
Array(j+1) = t
Next
End Sub
ISort TestData, 0, N - 1
For I = 0 To N - 1
Result = Result & TestData(I) & VbTab
Next
MsgBox(Result)
'希尔排序
Option Explicit
Dim Result, I
Dim TestData(100)
const N = 100
Randomize
For I = 0 To N - 1
TestData(I) = ROUND(RND() * 32768)
Next
Sub SortWithStep(byRef Array, low, hi, stp)
Dim s, i, j, t
For s = 0 To stp-1
For i = s+low+stp To hi Step stp
t = Array(i)
j = i-stp
Do
If j < s+low Then
Exit Do
End If
If Array(j) > t Then
Array(j+stp) = Array(j)
j = j - stp
Else
Exit Do
End If
Loop
Array(j+stp) = t
Next
Next
End Sub
'希尔排序
Sub ShellSort(byRef Array, low, hi)
Dim Step
Step = Int((hi-low+1)/2) + 1
Do
SortWithStep Array, low, hi, Step
If Step < 1 Then
Exit Do
Else
Step = Int(Step/2)
End If
Loop
End Sub
ShellSort TestData, 0, N - 1
For I = 0 To N - 1
Result = Result & TestData(I) & VbTab
Next
MsgBox(Result)
本文介绍了两种基本的排序算法——插入排序和希尔排序,并通过VB代码实现这两种算法。插入排序简单直观,适用于小规模数据集;希尔排序作为插入排序的一种改进,通过增量分组的方式减少比较次数,提高了排序效率。
18万+

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



