填空题
冒泡法排序
在教程中已介绍选择法、合并法排序,上例使用插入法排序,常用的排序方法还有冒泡法。
冒泡法排序与选择法排序相似,选择法排序在每一轮排序时找最大(递减顺序)数的下标,出了内循环(一轮排序结束),再交换最大数的位置;而冒泡法排序在每一轮排序时将相邻的数比较,当顺序不对就交换位置,出了内循环,最大数已冒出。
按递增顺序排序的程序如下:
Private Sub Form_Click 1
Dim a,n/%,j/%,i/%,t
a=Array(19,5,15,7,11,9,23,6,3,1)
n=UboundA、
For i=0 To n-1
For j=0 To n-i-1
If a(j)>a(j+1)Then
2: 3:a(j+1)=t
End If
Next j
Next i
For i=0 To UboundA、
Print a(i);
Next I
End Sub
请在程序中下划线处填入相应的内容。
为了提高效率,若在某一轮排序时,未发生位置交换,说明欲排序的序列已有序,排序就可结束。程序中只要增加一个逻辑变量来进行判断。程序如下:
Private Sub Form_Click 4
Dim a,n/%,m/%,I/%,Tag As Boolean
a=Array(1,5,6,7,4,13,23,26,31,51)
n=UboundA、
For i=0 To n-1
Tag=False
For j=0 To n-1-i
If a(j) >a(j+1)Then
56: 7:a(j+1)=t
End If
Next j
If 8
Next I
For I=0 To UboundA、
Print a(i);
Next i
End Sub
1、
【正确答案】
1、t=a(i) a(j)=a(j 1) Tag=True Tag为True,说明数次序不对,进行过交换。 t=a(i) a(j)=a(j 1) Not Tag Then Exit For 在某一轮比较时没有发生过数据位置交换,说明数组已有序,不必再进行下一轮的比较。