一、排序算法
1.选择排序
(2)比较的次数:n*(n-1)/2 交换的次数:小于n-1 趟数:n-1
(3)算法:将数组内的数据从小到大排序
(4)例题:
例题1:使用选择排序的方法对数据8、6、1、9、4 从大到小排序,需要进行数据比较、数据互换的次数分别是( D )
A、4,5
B、10,2
C、3,3
D、10,4
例题2 :小陈设计了一个带密码的趣味“4+1”小游戏,小陈告诉大家,该密码可以通过以下方法破解:将一组顺序是“3、2、8、5、9”的数码,在用选择排序法将这组数码从大到小的排序过程中,进行两次数据交换,即得。则该密码可能是( D )
A、98523
B、92853
C、98523
D、98253
例题3:以下表格中的数据为2009 年快乐女生十进七淘汰赛的选手信息。某同学设计了一个Visual Basic 程序用于选出晋及前七名的选手信息。程序界面如下图所示,单击“十进七晋级名单”,在list2 里显示晋及前七名的选手信息。阅读、完善以下程序,并上机验证。完成下面问题:
Dim xs(1 To 10) As String
Dim df(1 To 10) As Intege
Private Sub Form_Load()
Dim i As Integer
xs(1) = "黄英“: df(1) = 88
xs(2) = "江映蓉“: df(2) = 87
xs(3) = "李霄云“: df(3) = 72
xs(4) = "刘惜君“: df(4) = 77
xs(5) = "谈莉娜“: d(5) = 61
xs(6) = "郁可唯“: df(6) = 81
xs(7) = "潘虹越“: df(7) = 48
xs(8) = "潘辰“: df(8) = 38
xs(9) = "李媛希“: df(9) = 36
xs(10) = "曾轶可“: df(10) = 51
For i = 1 To 10
List1.AddItem xs(i) + "" + Str(df(i)) List1.AddItem ""
Next i
End Sub
Private Sub Command1_Click()
Dim j As Integer, k As Integer
Dim m As Integer
Dim temp1 As String
Dim temp2 As Integer
For j = 1 To 9 m = j
For k = j + 1 To 10
If ①Then m= k
Next k
If j <> m Then
temp1 = xs(j): ②
xs(m) = temp1
temp2 = df(j)
df(j) = df(m):
df(m) = temp2
End If
Next j
For j = ③
List2.AddItem xs(j) + "" + Str(df(j)) List2.AddItem ""
Next j
End Sub
1)command1 上单击事件处理过程中采用的算法是:选择排序(填:冒泡排序或选择排)2)command1 上单击事件处理过程中采用的排序方式是:升序(填升序或降序)
3)程序中划线①处应填入df(k) > df(m)
4)程序中划线②处应填入xs(j) = xs(m)
5)程序中划线③处应填入1 to 7
2.冒泡排序
(1) 概念:把待排序的n个元素的数组看成是垂直堆放的一列数据,从最下面的一个元素起,自下而上地比较相邻两个元素中的数据,将较小的数据换到上面的一个元素中,重复这一过程,直到处理
完最后两个元素中的数据,称为第一遍加工。然后对余下的n-1个元素重复上述处理过程,直至最后进行余下的两个数据的比较和交换。
(2)算法:将数组内的数据从小到大排序
(3)例题:
例题1:5 位学生100 米短跑的成绩(单位:秒)如下表。若采用冒泡排序算法对其进行排序,则第3 趟的排序结果是( A )
A、12.6 12.8 13.3 14.2 13.5 B 、12.6 12.8 13.3 13.5 14.2
C、12.6 12.8 14.2 13.5 13.3 D 、12.6 12.8 13.5 14.2 13.3
例题2:下表记录了 6 个数据排序的过程。分析表中数据可知,该排序采用的算法与排序方式分别为( C )
A、冒泡排序、降序
B、选择排序、降序
C、冒泡排序、升序
D、选择排序、升序
例题3:随机产生10 个两位正整数,并对它们进行排序。用VB 编写的程序运行界面如下图所示,请阅读并完善程序段,并上机验证。
Dim d(1 to 10) as integer '定义一个一维数组d,用于存放10 个正整数
Dim i As Integer As Integer
Dim j As Integer, temp As Integer
Private Sub Command1_Click()
'随机产生10 个两位正整数
Randomize '随机数初始化
List1.Clear '原始数据清空
For i = 1 To 10
d(i) = int(Rnd*90)+10
List1.AddItem Str(d(i))
'将数据显示到原始数据列表中
Next
End Sub
发布评论