📄 新建 文本文档.txt
字号:
7
'组合框combo1的单击事件,选择升降序
Private Sub Combo1_Change()
Select Case Combo1.ListIndex
case0
Combo1.Text = "升序"
case1
Combo1.Text = "降序"
End Select
End Sub
'字号组合框combo2的单击事件,选择排序方法
Private Sub Combo2_Change()
End Sub
'产生随机数
Private Sub Command1_Click()
Dim number(1 To 100) As Integer
Dim m As Integer
Randomize
For m = 1 To 100
number(m) = Int(Rnd * 100) + 1
List1.AddItem number(m)
Next m
End Sub
'升序
Private Sub Command2_Click()
Dim m As Integer
Dim number(1 To 100) As Integer
For m = 0 To 99
number(m + 1) = List1.List(m)
Next m
For i = 1 To 100
For j = 1 To 100 - i '比较次数逐渐减少
If number(j) > number(j + 1) Then
t = number(j)
number(j) = number(j + 1)
number(j + 1) = t
End If
List2.AddItem number(j + 1)
Next j
Next i
Print
End Sub
'在load事件中,将各列表项加入到组合框combo1、组合框combo2中
Private Sub Form_Load()
Combo1.AddItem "升序"
Combo1.AddItem "降序"
Combo2.AddItem "冒泡排序"
Combo2.AddItem "插入排序"
Combo2.AddItem "桶排序"
Combo2.AddItem "选择排序"
Combo2.AddItem "希尔排序"
Combo2.AddItem "快速排序"
Combo2.AddItem "堆排序"
End Sub
Option Explicit
Option Base 1
Dim aarray() '定义数组
Dim h '定义循环次数为h
Private Sub cmbSorts_Click()
If cmbSorts.ListIndex > 6 Then 'cmbsorts的列表序号大于6时
cmbOrder.Enabled = False 'cmborder不可操作
Else
cmbOrder.Enabled = True
End If
End Sub
Private Sub Command1_Click()
Dim i
Dim j
If Len(Trim$(shuzudaxiao)) = 0 Then
shuzudaxiao = "0" '当数组大小为空时默认为零
End If
ReDim aarray(CDbl(shuzudaxiao)) '定义数组数的个数为输入数字
Randomize '初始化随机数
weipailie.Clear '将未排列框内容清空
For i = 1 To CDbl(shuzudaxiao)
j = Int((32767 - (-32768) + 1) * Rnd + (-32768)) '产生随机数
weipailie.AddItem Str$(j) '将产生的随机数加到下一行
aarray(i) = j
Next
Command2.Enabled = True
End Sub
Private Sub Command2_Click()
Dim i, m
Dim fuction
MousePointer = 11
pailiehou.Clear
i = Timer
lblBegin = "开始时间: " & i
h = 0 '循环次数初值赋为0
Select Case cmbSorts.ListIndex
Case 0 ' 调用子过程 进行排序
Call BubbleSort(aarray()) '冒泡排序
Case 1
Call Selection(aarray()) '选择排序
Case 2
Call insertion(aarray()) ' 插入排序
Case 3
Call shellsort(aarray()) '希尔排序
Case 4
Call heap(aarray(), m) '堆排序
End Select
lblIterations = "循环次数: " & Format$(h, "#,#")
lblEnd = "结束时间: " & Timer
lblDuration = "耗时: " & Timer - i & " 秒!"
For i = 1 To UBound(aarray)
pailiehou.AddItem aarray(i)
Next
MousePointer = 11
End Sub
Private Sub Form_Load()
cmbOrder.AddItem "升序" '输入列表项
cmbOrder.AddItem "降序"
cmbOrder.ListIndex = 0
cmbSorts.AddItem "冒泡排序"
cmbSorts.AddItem "选择排序"
cmbSorts.AddItem "插入排序"
cmbSorts.AddItem "快速排序"
cmbSorts.AddItem "希尔排序"
cmbSorts.AddItem "堆排序"
cmbSorts.AddItem "桶排序"
cmbSorts.ListIndex = 0
weipailie.AddItem "-13322" '输入未排序列表框内容
weipailie.AddItem "21571"
weipailie.AddItem "-5111"
ReDim aarray(1 To 3)
aarray(1) = -13322
aarray(2) = 21571
aarray(3) = -5111
End Sub
'冒泡排序
Sub BubbleSort(aarray())
Dim a
Dim b
Dim t
'升序
If cmbOrder.ListIndex = 0 Then
For a = 1 To UBound(aarray)
For b = 1 To UBound(aarray) - a '从第一轮里找最大的值
If aarray(b) > aarray(b + 1) Then
t = aarray(b)
aarray(b) = aarray(b + 1)
aarray(b + 1) = t '将最大数换到最下方
h = h + 1
End If
Next b
Next a
End If
'降序
If cmbOrder.ListIndex = 1 Then
For a = 1 To UBound(aarray)
For b = 1 To UBound(aarray) - a
If aarray(b) < aarray(b + 1) Then
t = aarray(b)
aarray(b) = aarray(b + 1)
aarray(b + 1) = t
h = h + 1
End If
Next b
Next a
End If
End Sub
'选择排序
Sub Selection(aarray())
Dim a
Dim b
Dim t
Dim imax
'升序
If cmbOrder.ListIndex = 0 Then
For a = 1 To UBound(aarray) - 1
imax = a '为最大值赋初值
For b = a + 1 To UBound(aarray)
If aarray(imax) > aarray(b) Then
imax = b
End If
h = h + 1
Next b
t = aarray(a) '将最大值换到最后一位
aarray(a) = aarray(imax)
aarray(imax) = t
Next a
End If
'降序
If cmbOrder.ListIndex = 1 Then
For a = 1 To UBound(aarray) - 1
imax = a
For b = a + 1 To UBound(aarray)
If aarray(imax) < aarray(b) Then
imax = b
End If
h = h + 1
Next b
t = aarray(a)
aarray(a) = aarray(imax)
aarray(imax) = t
Next a
End If
End Sub
李立彦 16:34:02
就在QQ聊天中
.贾天西 . 16:34:11
哦
.贾天西 . 16:34:17
收到
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -