试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

《冒泡排序》同步练习

n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Command1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如例图所示。

实现上述功能的VB代码如下,但加框处代码有错,请改正。

Dim a(1 To 8) As Integer

Dim n As Integer

Private Sub Form_Load()

'n=8,排序前数据存储在数组a中,并在列表框List1中显示

'代码略

End Sub

Private Sub Command1_Click()

Dim flag As Boolean  'flag值为True表示一遍加工中发生过交换

i=1

flag=True

Do While i<=n-1 Or flag=True      '(1)

flag=False

For j=n To i+1 Step -1

If a(j)<a(j-1) Then

k=a(j):a(j)=a(j-1):a(j-1)=k

flag=True

End If

Next j

i=i+1

Loop

Label3.Caption="排序过程的加工遍数为"+Str(i)             '(2)

For i=1 To n

List2.AddItem Str(a(i))

Next i

End Sub

 ⑵ 

举一反三
返回首页

试题篮