冒泡法排序(基本题型)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
冒泡法排序(基本题型)
班级:姓名:
1.某区进行“文化带头人”的竞选活动,通过微信公众平台海选,10位候选人的票数分别“35687、32150、32889、34526、33293、38521、36211、34556、37221、35910”,若使用冒泡排序法,将票数按多到少排序,则第一遍排序后共交换数据的次数为( )
A.5
B.7
C.6
D.8
2.对数据7,6,3,9,2进行排序,若第一遍加工的结果是2,7,6,3,9,则第三遍加工的结果是( )
A.2,3,6,7,9
B.3,6,2,7,9
C.3,2,7,6,9
D.2,3,7,6,9
3.对下列数据序列进行冒泡升序排序,在排序过程中效率最低的序列是( )
A.31,29,24,20,15,10
B.10,15,20,24,29,31
C.29,10,31,15,20,24
D.24,29,31,20,15,10
4.有一个数组,采用冒泡排序,第一遍排序后的结果为:4,10,5,32,6,7,9,17,24,那么该数组的原始顺序不可能的是( )
A.10,5,32,6,7,9,17,24,4
B.10,5,32,6,7,9,4,17,24
C.10,5,32,4,6,7,9,17,24
D.4,10,5,32,17,9,24,6,7
5.六个数据“7,10,21,9,16,33”依次存放在数组元素a(1)到a(6)中,使用如下VB程序段对六个数据进行从大到小排序.
For i=1 To 2
For j=6 To i+1 Step -1
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
则程序段运行后,数组a(1)到a(6)中的数据依次为( )
A.33,16,21,9,7,10
B.33,21,7,10,16,9
C.33,16,21,7,9,10
D.33,21,10,16,7,9
6.某程序算法如下:
For i=1 To N﹣1
For j=N 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
如果有N个待排序数据,采用该排序,语句a(j)<a(j﹣1)的比较次数为( )
A.N2
B.N(N﹣1)/2
C.(N﹣1)(N﹣2)/2
D.N
7.表列出了存放在数组d中的8个学生身高(单位:厘米)的数据,若采用冒泡排序进行升序排列,并自右向左进行比较和交换,那么两轮排序后数据交换总次数为 ( )
d(1) d(2) d(3) d(4) d(5) d(6) d(7) d(8)
179 170 166 159 174 186 158 165
A.11
B.10
C.9
D.8
8.下列VB程序的功能是:程序运行时,单击命令按钮Command1后,产生10个[1,999]范围内互不相同的随机整数,依次显示在列表框List1中,然后将它们按从小到大的顺序排序,排序结果显示在列表框List2中.
数组a用于存储产生的10个随机整数,函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False.
(1)虚线框内程序段所采用的排序算法名称是.(填:冒泡排序/选择排序)
(2)在程序①和②划线处填入适当的语句或表达式,把程序补充完整.
Dim a(1 To 10)As Integer
Function f(x As Integer)As Boolean
'代码略
End Function
Private Sub Command1_Click( )
Dim n As Integer 'n用于统计随机整数个数
Dim i As integer,j As Integer
Dim x As Integer,k As Integer
Randomize'初始化Rnd函数
n=0
List1.Clear'清除列表框中内容
List2.Clear
Do While n<10
x=Int(Rnd*999)+1 '产生[1,999]内的随机整数
If Not f(x) Then
n=n+1
a(n)=x
List1.AddItem Str( )
End If
Loop
For i=1To 10
List2.AddItem Str(a(i))
Next i
End Sub.
9.小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果.程序运行界面如图所示.
实现上述功能的VB程序如下,但加框处代码有错,请改正.
Const n=10
Dim a(1 To n) As Integer
Private Sub Command1_Click ( )
Dim i As Integer,j As Integer,t As Integer
Dim bottom As Integer
'获取排序前数据依次存储在数组a中,并在文本框Text1中显示.代码略bottom=n
i=1
Do While i<=bottom﹣1
For j=bottom To i+1 Step ﹣1
If Then
t=a(j):a(j)=a(j﹣1):a(j﹣1)=t
ElseIf a(j)=a(j﹣1)Then
'相邻两个数据相等,进行剔除处理
bottom=bottom﹣1
End If
Next j
i=i+1
Loop
Text2.Text=””
For i=1 To bottom
Text2.Text=Text2.Text+Str(a(i))
Next i
End Sub