内容正文:
算法应用举例--排序
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.采用冒泡排序算法对数据序列“18,13,15,2,1,20”进行排序,第一轮排序后的结果为“1,18,13,15,2,20”,则完成整个序列的排序交换的次数是( )
A.6 B.7 C.8 D.9
2.有如下VB程序段:
For i=1 To n-1 Step 2
For j=1To((n+1)\2)*2-i-2 Step 2
If a(j)>a(j+2)Then
t=a(j):a(j)=a(j+2):a(j+2)=t
End If
Next j
For j= ①
If a(j)>a(j-2)Then
t=a(j):a(j)=a(j-2):a(j-2)=t
End If
Next j
Next i
执行该程序段后,实现了对数组元素a(1)~a(n)中的奇数位置从小到大排序,偶数位置从大到小排序。则代码中①处的语句可为( )
A.(n\2)*2 To i+1 Step-2 B.(n\2)*2 To i+3 Step-2
C.i+1 To(n\2)*2 Step2 D.i+1 To (n\2)*2-2 Step2
3.采用冒泡排序算法对数据序列“4,9,8,2,6,3”完成升序排序,则需要交换的次数为( )
A.9 B.10 C.11 D.12
4.利用冒泡排序给数组[15,78,88,23,69,71,20,53]升序排序,第三遍冒泡加工之后的数据结果是( )
A.[15,20,23,78,88,69,71,53] B.[15,20,23,53,78,88,69,71]
C.[15,78,23,69,71,20,53,88] D.[15,23,69,71,20,53,78,88]
5.某算法的 VB 程序段如下:
i=1:flag=True
Do While i<6 And flag=True
flag=False
For j =6 To i+1 step -1
If a(j) > a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
flag=True
End If
Next j
f(i)=1 'f 数组初值均为 0
i=i+1
Loop
For i=1 To 6
s=s+f(i)
Next i
数组元素 a(1)到 a(6)的值依次为“17,79,93,55,15,13”,执行该程序段后,s 的值是( )
A.3 B.4 C.5 D.6
6.某食品连锁店5位顾客贵宾消费卡的积分依次为900、512、613、700、810,若采用选择排序算法对其进行从小到大排序,如下表,第二趟的排序结果是( )。
原始数据
900
512
613
700
810
第一趟
512
900
613
700
810
第二趟
第三趟
512
613
700
900
810
第四趟
512
613
700
810
900
A.512 613 700 900 810
B.512 810 613 900 700
C.512 900 613 700 810
D.512 613 900 700 810
7.有如下 VB 程序段:
Const n = 7
Dim a(1 To 7) As Integer
Dim flag(1 To 7) As Integer 'flag 数组初始值均为 0
Dim k As Integer, t As Integer
a(1) = 18: a(2) = 34: a(3) = 56: a(4) = 23: a(5) = 29: a(6) = 39: a(7) = 72
k = (1 + 7) / 2
For i = 1 To n
For j = 1 To n
If a(j) > a(k) And flag(j) = 0 Then t = a(j): a(j) = a(k): a(k) = t
Next j
flag(k) = 1
k = (k + 5) Mod 7 + 1 Next i
执行该段程序后,数组元素 a(1)到 a(7)的值为( )
A.29,23,18,72,56,39,34 B.39,56,72,18,23,29,34
C.34,39,56,72,18,23,29 D.