搜档网
当前位置:搜档网 › VB常用算法——排序

VB常用算法——排序

VB常用算法——排序
VB常用算法——排序

VB常考算法(八)排序:

1、算法

1)选择法排序

算法说明:根据上例中求最小值的思路,我们可以使用如下方法进行从小到大排序:第一轮,以第一个元素逐个跟后面的所有元素比较,如果比后面的元素大就进行交换,经过一轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进行比较确定下次小的元素;以此类推…

下面我们以图形的形式体现对5个数进行选择排序的过程:

第一轮:第二轮:

第三轮:

从上图可以发现对5个元素进行排序,总共经过了5-1=4轮,而每一轮中比较的次数也不相同,第一轮2、3、4、5号元素参与跟1号元素的比较,共4次,第二轮3、4、5号元素参与跟2号元素的比较,共3次,以次类推,比较次数逐步减少。经过四轮的比较,利用逐步求最小值的方法将5个数从小到大排好序。对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每一轮的次数。

程序代码:

Private Sub Command1_Click()

Dim n As Integer

n = InputBox("请输入数组元素的个数:")

Dim a() As Integer, i As Integer, j As Integer

Print "排序前:"

ReDim a(n)

For i = 1 To n

a(i) = Int(Rnd * (99 - 10 + 1) + 10)

Print a(i);

最小值

次小值

Next i

For i = 1 To n - 1

For j = i To n

If a(i) > a(j) Then

temp = a(i) '交换元素

a(i) = a(j)

a(j) = temp

End If

Next j

Next i

Print

Print "排序后:"

For i = 1 To n

Print a(i);

Next i

End Sub

2)冒泡法排序

算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大,则将它们进行交换,具体思路:设在数组a 中存放n 个元素,第一轮,将a(1)和a(2)进行比较,若a(1)>a(2),则交换这两个元素的值,然后继续用a(2)和a(3)比较,若a(1)>a(2),则交换这两个元素的值,以此类推,直到a(n-1)和a(n)进行比较处理后,a(n)中就存放了n 个数中最大的值;第二轮,用a(1)与a(2),a(2)与a(3),…,a(n-2)与a(n-1)进行比较,处理方法相同,这一轮下来,a(n-1)中存放n 个数中第二大的值;…;第n-1轮,a(1)与a(2)进行比较处理,确保最小值在a(1)中。经过n-1轮比较处理,n 个数已经按从小到大的顺序排列好。

下面我们以图形的形式体现对5个数进行冒泡排序的过程:

第一轮:

第三轮:

第四轮:

最大值

程序代码:

Private Sub Command1_Click()

Dim n As Integer

n = InputBox("请输入数组元素的个数:")

Dim a() As Integer, i As Integer, j As Integer

Print "排序前:"

ReDim a(n)

For i = 1 To n

a(i) = Int(Rnd * (99 - 10 + 1) + 10)

Print a(i);

Next i

For i = 1 To n - 1

For j = 1 To n - i

If a(j) > a(j + 1) Then '相邻元素比较

temp = a(j)

a(j) = a(j + 1)

a(j + 1) = temp

End If

Next j

Next i

Print

Print "排序后:"

For i = 1 To n

Print a(i);

Next i

End Sub

2、实战练习

1)填程序一

算法说明:C盘根目录下的数据文件中有两组数据,第一组数据未排序,并以-1表示该组数据结束;第二组数据按从小到大顺序排列。下面程序的功能是,单击“读入数据”按钮,将文件中的两组数据,分别读入到A、B数组中,单击“插入排序”按钮,则把A数组的元素按其大小依次插入到B数组的适当位置,使得B数组中元素仍为从小到大排列。完善程序,实现以上功能。

Dim a() As Integer, b() As Integer

Private Sub command1_click()

Dim I As Integer, j As Integer, n As Integer, s As String

(1) ‘参考答案:Open "c:\" For Input As #11

Do

Input #11, n

If n = -1 Then Exit Do

I = I + 1

ReDim Preserve a(I)

a(I) = n

s = s & Str(a(I))

Loop

Text1 = s

s = ""

(2) ‘参考答案:Do While Not EOF(1)

j = j + 1

ReDim Preserve b(j)

Input #11, b(j)

s = s & Str(b(j))

Loop

Text2 = s

Close 11

End Sub

Private Sub command2_click()

Dim I As Integer, j As Integer, s As String

For I = 1 To UBound(a)

If a(I) < b(1) Then

Call change(a(I), 1)

ElseIf a(I) > b(UBound(b)) Then

(3) ‘参考答案:ReDim Preserve b(UBound(b) + 1)

b(UBound(b)) = a(I)

Else

For j = 2 To bound(b)

If (a(I) > b(j - 1)) And a(I) <= b(j) Then Call change(a(I), j) Next j

End If

Next I

For I = 1 To UBound(b)

s = s & Str(b(I))

Next I

Text3 = s

End Sub

Private Sub change(n As Integer, k As Integer)

Dim I As Integer

ReDim Preserve b(UBound(b) + 1)

For I = UBound(b) To k + 1 Step -1

(4) ‘参考答案:b(I) = b(I - 1)

Next I

(5) ‘参考答案:b(k) = n

End Sub

2)填程序二

Option Base 1

Dim n%, tag_in%

Dim stud(1 To 10) As StudType

Type StudType

Num As String * 6 ' 学号

Name As String * 8 ' 姓名

Average As Single ' 平均分End Type

Private Sub Command1_Click()

If n < 10 Then

tag_in = 0

n = n + 1

Else

tag_in = 1

MsgBox "输入的学生人数已超过数组声明的个数!"

End If

If tag_in = 0 Then

If Text1 = "" Then

MsgBox "学号不能为空,请重输!"

n = (1)

Else

(2)= Text1

stud(n).Name = Text2

stud(n).Average = Val(Text3)

End If

End If

Text1 = "": Text2 = "": Text3 = ""

End Sub

Private Sub Command2_Click()

Dim t As StudType

For j = 1 To n - 1

For k = (3)To n

If stud(k).Average > stud(j). (4)Then

t = stud(k)

stud(k) = (5)

stud(j) = t

End If

Next k

Next j

For j = 1 To n

stud(j).Num; stud(j).Name; stud(j).Average Next j

End Sub

VB常用的算法——排序

VB常考算法(八)排序: 1、算法 1)选择法排序 算法说明:根据上例中求最小值的思路,我们可以使用如下方法进行从小到大排序:第一轮,以第一个元素逐个跟后面的所有元素比较,如果比后面的元素大就进行交换,经过一轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进行比较确定下次小的元素;以此类推… 下面我们以图形的形式体现对5个数进行选择排序的过程: 第一轮:第二轮: 第三轮: 从上图可以发现对5个元素进行排序,总共经过了5-1=4轮,而每一轮中比较的次数也不相同,第一轮2、3、4、5号元素参与跟1号元素的比较,共4次,第二轮3、4、5号元素参与跟2号元素的比较,共3次,以次类推,比较次数逐步减少。经过四轮的比较,利用逐步求最小值的方法将5个数从小到大排好序。对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每一轮的次数。 程序代码: Private Sub Command1_Click() Dim n As Integer n = InputBox("请输入数组元素的个数:") Dim a() As Integer, i As Integer, j As Integer Print "排序前:" ReDim a(n) For i = 1 To n a(i) = Int(Rnd * (99 - 10 + 1) + 10) Print a(i); 最小值 次小值

Next i For i = 1 To n - 1 For j = i To n If a(i) > a(j) Then temp = a(i) '交换元素 a(i) = a(j) a(j) = temp End If Next j Next i Print Print "排序后:" For i = 1 To n Print a(i); Next i End Sub 2)冒泡法排序 算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大,则将它们进行交换,具体思路:设在数组a 中存放n 个元素,第一轮,将a(1)和a(2)进行比较,若a(1)>a(2),则交换这两个元素的值,然后继续用a(2)和a(3)比较,若a(1)>a(2),则交换这两个元素的值,以此类推,直到a(n-1)和a(n)进行比较处理后,a(n)中就存放了n 个数中最大的值;第二轮,用a(1)与a(2),a(2)与a(3),…,a(n-2)与a(n-1)进行比较,处理方法相同,这一轮下来,a(n-1)中存放n 个数中第二大的值;…;第n-1轮,a(1)与a(2)进行比较处理,确保最小值在a(1)中。经过n-1轮比较处理,n 个数已经按从小到大的顺序排列好。 下面我们以图形的形式体现对5个数进行冒泡排序的过程: 第一轮: 第三轮: 第四轮: 最大值

高中信息技术 VB排序算法与程序实现 浏览题阅览题 会考复习题

高中信息技术VB排序算法与程序实现浏览题阅览题会考 复习题 学校:___________姓名:___________班级:___________考号:___________ 一、选择题 (一)顺序查找数据:我们假定被查找的数据存储在有n个元素的数组变量d中,要寻找的一个特定的数据(这个数据称为查找键)已经存储在变量key中。 下面是顺序查找算法的输入输出说明。 输入:查找键(设在变量key中)。被查找的数据(设在数组变量d中)。 输出:若找到,输出值为key的数据所在的数组元素的下标,记为i; 若未找到,输出结果为提示字符串:"找不到"。 当在n=8个元素的数组里顺序查找数据的示意图如下: 找到情况未找到情况 总结顺序查找数据结果判断条件: (1)、当找到时,肯定i<="8," n个数据时,肯定i<=n,i即为找到的数组元素下标,d(i)=key; (2)、当"找不到"时,i=9>8了;n个数据时,当i=n+1时,表示"找不到"。 顺序查找的主程序段如下: Private Sub 顺序查找_Click() n个数据放入d(1)到d(n)中 Key =" Val(Text1.Text):" i =1.‘变量Key从文本框Text1取的数要查找的数; Do While ① i =" i" + 1

Loop If i <=" n" Then Text2.Text = "在d(" + Str(i) + ")中" ‘例如在文本框Text2显示:“在d(6)中” Else Text2.Text = "找不到" End If End Sub 上程序Do While的条件① 是() A.Key <> d(i) B.i <= n C.Key <> d(i) And i <= n D.Key <> d(i) or i <= n 【答案】C 【解析】 2.用选择排序将七个数“2022、2017、2018、2014、2021、2012、2015”从小到大进行排序,则第二轮交换数据后的顺序是: A、2022、2021、2018、2017、2014、2012、2015 B、2012、2014、2018、2017、2021、2022、2015 C、2012、2017、2018、2014、2021、2022、2015 D、2022、2021、2018、2014、2017、2012、2015 【答案】D 【解析】 3.关于对分查找和顺序查找算法的叙述,正确的是()。 A.顺序查找需要排序,效率低;对分查找不需要排序,效率高。 B.顺序查找不需要排序,效率低;对分查找需要排序,效率高。 C.顺序查找不需要排序,效率高;对分查找需要排序,效率低。 D.顺序查找需要排序,效率高;对分查找不需要排序,效率低。 【答案】B 【解析】

vb 排序程序1

Option Explicit Dim Sums(9999) As Long, Sumb(9999) As Long '生成数据数量可自己设置 Private blnSort As Boolean '排序方向Private Declare Function SendMessageFind Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wmsg As Long, ByVal wparam As Integer, ByVal lparam As String) As Long Private Declare Function timeGetTime Lib "winmm.dll" () As Long Dim T As Long Private Sub Command1_Click() Dim i As Long, z As Long, j As Long List1.Clear DoEvents List1.Visible = False For i = 0 To UBound(Sums) nn: Randomize z = 99999 * Rnd + 9 j = SendMessageFind(List1.hWnd, &H18F, 0, z) If j > -1 Then GoTo nn Else Sums(i) = z Sumb(i) = z List1.AddItem Sums(i) End If Next List1.Visible = True Me.Caption = "共产生数据:" & UBound(Sums) + 1 & " 项" End Sub Private Sub Command2_Click() Dim ti As Integer, i As Long List2.Clear DoEvents For i = 0 To UBound(Sumb) Sums(i) = Sumb(i) Next

VB算法总结

VB算法总结: 1、最大公约数算法说明 1)最大公约数: 用辗转相除法求两自然数m、n的最大公约数。 (1)首先,对于已知两数m、n,比较并使得m>n; (2)m除以n得余数r; (3)若r=0,则n为求得的最大公约数,算法结束;否则执行步骤(4) (4)m n n r 再重复执行(2) 譬如:10与5 分析步骤:m=10 n=5 r=m mod n=0 所以n(n=5)为最大公约数 24与9 分析步骤:m=24 n=9 r=m mod n=6 r≠0 m=9 n=6 r=m mod n=3 r≠0 m=6 n=3 r=m mod n=0 所以n(n=3)为最大公约数 算法实现 Private Function GCD(ByVal m As Long, ByVal n As Long) As Long Dim temp As Long If m < n Then temp = m: m = n: n = temp

Dim r As Long Do r = m Mod n If r = 0 Then Exit Do m = n n = r Loop GCD = n End Function 2)最小公倍数 m×n÷最大公约数 3)互质数 最大公约数为1的两个正整数

2、素数算法说明 素数(质数):就是一个大于等于2的整数,并且只能被1和本身整除,而不能被其他整数整除的数。 判别某数m是否是素数的经典算法是: 对于m,从I=2,3,4,……,m-1依次判别能否被I整除,只要有一个能整除,m就不是素数,否则m是素数。 Private Function prime(ByVal n%) As Boolean Dim i % prime=true For i = 2 To sqr(n) If n Mod I = 0 Then Prime=false Exit For endif Next I End Function

高中学考选考VB常用算法

程序设计的常用算法 算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(10)。 将程序编写在一个GetTJput过程中,代码如下: Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer '产生100个[0,99]范围内的随机整数,每行10个打印出来 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) < 10 Then Form1.Print Space(2); a(i); Else Form1.Print Space(1); a(i); End If If i Mod 10 = 0 Then Form1.Print Next i '统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来 For i = 1 To 100 p = a(i) Mod 10 ' 求个位上的数字 If p = 0 Then p = 10 x(p) = x(p) + 1 Next i Form1.Print "统计结果" For i = 1 To 10 p = i If i = 10 Then p = 0 Form1.Print "个位数为" + Str(p) + "共" + Str(x(i)) + "个" Next i End Sub 分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r;

VB写的快速排序算法

VB写的快速排序算法 快速排序算法(递归算法) Public Sub QuickSort(ByRef aStrSort() As String, ByVal lngleft As Long, ByVal lngright As Long) Dim i As Long Dim j As Long Dim temp As String i = lngleft j = lngright temp = aStrSort(i) NextStep: Do Until i >= j While (aStrSort(j) > temp And j > i) j = j - 1 Wend If j > i Then aStrSort(i) = aStrSort(j) aStrSort(j) = temp i = i + 1 End If While (aStrSort(i) < temp And j > i) i = i + 1 Wend If j > i Then aStrSort(j) = aStrSort(i) aStrSort(i) = temp j = j - 1 End If Loop If lngleft < i - 1 Then QuickSort aStrSort, lngleft, i - 1 If lngright > i + 1 Then QuickSort aStrSort, i + 1, lngright End Sub '二分法查找算法(查找失败返回-1,数组下标从0开始)

Public Function BinSearch(ByRef strElement() As String, ByVal strKey As String) As Long Dim lngLow As Long Dim lngHigh As Long Dim lngMiddle As Long lngLow = 0 lngHigh = UBound(strElement) While (lngLow <= lngHigh) lngMiddle = (lngLow + lngHigh) / 2 If strElement(lngMiddle) = strKey Then BinSearch = lngMiddle Exit Function Else If strElement(lngMiddle) > strKey Then lngHigh = lngMiddle - 1 Else lngLow = lngMiddle + 1 End If End If Wend BinSearch = -1 '查找失败 End Function

(完整版)VB常用算法——排序

VB 常考算法(八)排序: 1、算法 1)选择法排序 算法说明:根据上例中求最小值的思路, 一轮,以第一个元素逐个跟后面的所有元素比较, 轮比 较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进 行比较确定下次小的元素;以此类推… 下面我们以图形的形 式体现对 第一轮: 第二轮: 素参与跟2号元素的比较,共 3次,以次类推,比较次数逐步减少。经过四轮的比较,利用 逐步求最小值的方法将 5个数从小到大排好序。 对于这样一个排序的过程, 我们可以使用两 个循环分别控制比较的轮数和每一轮的次数。 程序代码: Private Sub Comma nd1_Click() Dim n As In teger n = In putBox(" 请输入数组元素的个数: ") Dim a() As In teger, i As In teger, j As In teger Print " 排序前:” 我们可以使用如下方法进行从小到大排序: 第 如果比后面的元素大就进行交换, 经过一 1 6 4 2 5 最小值 次小值 5个数进行选择排序的过程: 第三轮:

ReDim a(n) For i = 1 To n a(i) = In t(R nd * (99 -10 + 1) + 10) Print a(i);

Next i For i = 1 To n - 1 For j = i To n If a(i) > a(j) Then temp = a(i)' a(i) = a(j) a(j) = temp End If Next j Next i Print Print " 排序后:" For i = 1 To n Print a(i); Next i End Sub 2)冒泡法排序 算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大, 则将它们进行交换, 具体思路:设在数组 a 中存放n 个元素,第一轮,将 a(1)和a(2)进行比较,若a(1)>a(2), 则交换这两个元素的值,然后继续用 a(2)和a(3)比较,若a(1)>a(2),则交换这两个元素 的值,以此类推,直到a(n-1)和a(n)进行比较处理后,a(n)中就存放了 n 个数中最大的值; 第二轮,用 a(1)与a(2),a(2) 与a(3),…,a(n-2)与a(n-1)进行比较,处理方法相同,这一 轮下来,a(n-1)中存放n 个数 中第二大的值;…;第 n-1轮,a(1)与a(2)进行比较处理, 确保最小值在a(1)中。经过n-1轮比较处理,n 个数已经按从小到大的顺序排列好。 2 1 p j 1 1 1 1 2 2 2 2 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 程序代码: Private Sub Comma nd1_Click() Dim n As In teger n = In putBox(" 请输入数组元素的个数: ") 交换元素 F 面我们以图形的形式体现对 5个数进行冒泡排序的过程: 第一轮: 最大值

vb常用排序法

冒泡法: (1) 从第一个元素开始,将相邻的数比较,若为逆序,就交换,比较完一轮,最大的数已沉底,成为数组中的最后一个元素a(n) (2) 对a(1)和a(n-1)的n-1个数进行同(1)的操作,次大的数放入a(n-1)中,完成第二轮排序。 (3) 进行n-1轮排序,所有的数排序完毕。 Dim a%(), i%, j%, n% For i = 1 To n - 1 For j = 1 To n - i If a(j) > a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next j Next i Print For i = 1 To n Print a(i); Next i 顺序交换法: (1) 从第一个元素开始,将它和其后的每个元素进行比较,若为逆序,就交换,比较完一轮,a(1)成为数组中的最小的元素。 (2) 对a(2)和a(n)的n-1个数进行同(1)的操作,次小的数放入a(2)中,完成第二轮排序。 (3) 进行n-1轮排序,所有的数排序完毕。 Dim a%(), i%, j%, n% For i = 1 To n - 1 For j = i + 1 To n If a(i) > a(j) Then t = a(i): a(i) = a(j): a(j) = t End If Next j Next i

选择法 (1) 从n个数的序列中选出最小的数,与第1个数交换位置; (2) 除第1个数外,其余n-1个数再按(1)的方法选出次小的数,与第2个数交换位置; (3) 重复(1)n-1遍,最后构成递增序列。 Dim a%(), i%, j%, n% For i = 1 To n – 1 k=i For j = i + 1 To n If a(j) < a(k) Then k=j Next j if k<>i then t=a(i): a(i)=a(k): a(k)=t Next i 插入法: 1. 找到插入数在数组中的位置i 2. 将从n到i的每个元素向后移动一个位置 3. 插入数 插入法1:将一个数插入到有序数列,使插入后数列仍然有序Dim a(1 To 10) As Integer Key = Val(InputBox("输入一个数")) For i=1 to 9 If a(i)>Key Then Exit For next i For k = 9 To i Step -1 a(k + 1) = a(k) Next k a(i) = Key 插入法2:用上面的插入方法将一批数排序(从小到大),设数列中开始只有一个元素。 Dim x(1 To 10) As Integer For i = 1 To 9 Key = x(i + 1) j = 1 Do While (Key >= x(j) And j <= i) j = j + 1 Loop For k = i To j Step -1 x(k + 1) = x(k) Next k x(j) = Key Next i

vb常用控件习题(含答案)

1.下列控件中没有Caption属性的是 ________。 A)框架 B)列表框 C)复选框 D)单选按钮 2.复选框的Value 属性为 1 时,表示 ________。 A)复选框未被选中 B)复选框被选中 C)复选框内有灰色的勾 D)复选框操作有误 3.用来设置斜体字的属性是 ________。 A)FontItalic B)FontBold C)FontName D)FontSize 4.将数据项“China”添加到列表框List1中成为第二项应使用 ________语句。 A)“China”,1 B)“ China ”, 2 C) 1,“China” D) 2,“ China ” 5.引用列表框List1最后一个数据项,应使用 ________语句。 A)) B)(ListCount) C)) D)(ListCount-1) 6.假如列表框List1有四个数据项,那么把数据项“China”添加到列表框的最后,应使用 ________语句。 A) 3,“ China ” B)“ China ”, C)“ China ”, 3 D)“China”, 7.执行了下面的程序后,列表框中的数据项有________。 Private Sub Form_Click() For i = 1 to 6 i Next i For i = 1 to 3 i Next i End Sub A)1,5,6 B)2,4, 6 C )4,5,6 D)1,3,5 8.如果列表框List1中没有选定的项目,则执行 语句的结果是 ________。 A)移去第一项 B)移去最后一项 C)移去最后加入列表中的一项 D)以上都不对 9.如果列表框List1中只有一个项目被用户选定,则执行 )语句的结果是________。 A)在Debug窗口输出被选定的项目的索引值 B)在Debug窗口输出True C)在窗体上输出被选定的项目的索引值 D)在窗体上输出True 10.在窗体上画一个名称为List1的列表框,一个名称为Label1的标签,列表框中显示若干城市的名称。但单击列表框中的某个城市名时,该城市名从列表框中消失,并在标签中显示出来。下列能正确实现上述操作的程序是______。 A)Private Sub List1_Click()

VB几种排序算法的比较设计报告

几种排序算法的比较设计报告学院班级学号姓名成绩 一、设计思路 1.要达到的目的 ①启动时可以对初始的几个数值进行排序 ②随机生成比较多的整数。要求数值在一个整数的所有范围内生成 ③对于基本要求的排序方法可实现生序,冒泡排序。 ④可以计算排序的初始时间和结束时间以及排序所用时间 ⑤实现使用选择排序,冒泡排序 ⑥可以比较几种排序算法的循环次数 ⑦支持的背景设置,可以设置成任意色彩 ⑧增加插入排序,快速排序 ⑨增加希而排序,桶排序 ⑩增加堆排序 2.关键问题的解决 ①随机生成多个整数,并放入数组中 ②排序时间的计算 ③循环次数的计算 ④几种排序算法的基本思想 二、模块之间的调用关系,或程序流程图 三、部分程序关键源代码及注释 Select Case Combo2.ListIndex Case 0 For i = 1 To n

For j = 1 To n - 1 If m(j) > m(j + 1) Then B = m(j): m(j) = m(j + 1): m(j + 1) = B End If a = a + 1 Next j,i Case 1 For i = 1 To n - 1 imin = i For j = i + 1 To n If m(imin) > m(j) Then imin = j a = a + 1 Next j B = m(i): m(i) = m(imin): m(imin) = B Next i End Select 四、设计方案的完善及目前存在的问题 1.设计方案要完善的地方 ①增加捅排序 ②增加堆排序 2. 目前存在的问题 ①无捅排序 ②无堆排序 ③耗时有时不准 五、本次设计的收获及心得体会 本次设计我收获很多,学到了很多以前没有学到过的有关VB的知识。并把所学知识用到了实践上了。对VB的基本控件和算法有了更深一步的了解。 六、对该题目和VB设计的意见和建议 1. 对该题目的意见和建议 排序算法太多了,有点乱,有好多方法还没有真正掌握。总的来说题目设计的很好。 2.对本次设计的意见和建议 没有告诉学生捅排序和排序的基本思路。

相关主题