选考:冒泡排序算法程序实现
选择题:
1、某品牌汽车4S店前8个月的销售数量存放在数组 a中,如下表所示 a(1) 508 a(2) 415 a(3) 201 a(4) 100 a(5) 125 a(6) 160 a(7) 355 a(8) 300 若采用冒泡排序算法对这些数据进行升序排列,那么在完成第一遍的排序时,数组元素a(1)和a(8)的值分别为( )
A.508 300 B.100 300 C.100 355 D.100 125
2、用冒泡排序对数据70,53,57,28,30,77,1进行排序,排序过程如表所示: 原始数据 70 53 70 28 57 53 30 28 57 70 30 28 53 77 30 57 1 77 77 第一遍加工后 1 第二遍加工后 第三遍加工后 1 …… 3、某书店在5所学校流动售书量(单位:本)分别是88,110,48,64,35。采用冒泡排序对其进行排序,若完成第一遍时的结果是:35,88,110,48,64,则完成第二遍时的结果是
(A)35,88,110,48,64 (B)35,48,88,64,110 (C)35,48,88,110,64 (D)35,48,64,88,110 原始数据 第一遍加工后 第二遍加工后 …… 4、用冒泡排序算法对一组志愿者的身高数据进行排序,假如一遍冒泡排序后就完成升序排序,则下列选项中可能是原始数据序列的是 (A)155,170,186,165,153 (B)155,186,165,153,170 (C)170,155,165,153,186 (D)155,165,153,170,186
5.对5个数字“2、8、6、1、7”进行两遍冒泡排序后即为某密码锁的密码,该密码可能是 (A)12687 (B) 12867 (C)28617 (D)12678
6、有6个学生的身高(单位:厘米)分别是124、126、120、123、125、128;若采用冒泡排序算法对其进行递减排序,则
①第2趟排序共需交换数据的次数是( ) ②6个数组元素需排序 趟,共比较 次,总共需要交换的次数为______, ③、n个数组元素需排序 趟,共比较 次 原始数据 124 126 120 123 125 128 交换 第一遍加工后 第二遍加工后 第三遍加工后 第四遍加工后 第五遍加工后 第六遍加工后 ……
程序设计题:
常见的冒泡排序算法程序实现(以升序排序为例) For i = 1 To ______ For j = 8 To ________ If d(j) < d(j - 1) Then k = d(j)
__________ d(j - 1) = k
End If Next j Next i
1、(2012第5套).校园十佳歌手比赛得分成绩已经出来,为了选出前十名选手,小明编写了如下Visual Basic程序,从所有选手中按得分从高到低选出前十名。选手编号和得分已分别保存在数组a和b中(共23名选手,编号为XS01到XS23),原始数据显示在列表框List1中,运行结果显示在列表框List2中,程序运行界面如图所示。
程序代码如下:
Dim a(1 To 23) As String, b(1 To 23) As Single Private Sub Command1_Click() Dim i As Integer, j As Integer Dim s As String, t As Single
For i = 1 To 22
For j = 1 To 23 - i
If ① Then
s = a(j): a(j) = a(j + 1): a(j + 1) = s t = b(j): b(j) = b(j + 1): b(j + 1) = t End If
Next j Next i
For i = 1 To 10
List2.AddItem a(i) + \② Next i End Sub
Private Sub Form_Load()
'此过程用于对数组a和数组b进行赋值,并显示在List1中,代码略 End Sub
(1)程序中加框部分的算法是 。 (选填:选择排序/冒泡排序) (2)在程序①和②划线处,填入适当的语句或表达式,把程序补充完整:
程序中①划线处应填入 。 程序中②划线处应填入 。
2(2012第5套).求中位数和平均数。一组数据进行排序后,如果有奇数个数,则中位数等于最中间数的值,如果有偶数个数,则中位数等于中间二个数的平均值。下列Visual Basic程序是小华用来计算班级50位同学身高的中位数和平均数。程序运行界面如图所示,50位同学的身高保存在数组a中并显示在列表框List1中,变量z保存中位数并将结果显示在文本框Text1中,变量p保存平均数并将结果显示在文本框Text2中,变量s保存所有身高之和。
程序代码如下:
Dim a(1 To 50) As Integer Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer Dim z As Single, s As Single, p As Single For i = 1 To 49
For j = 50 To i + 1 Step -1 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