n个数据的冒泡升序排序需要经过n-1遍的加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面,在第i遍加工过程中需要进行n-i对数据的比较。在某些情况下,第i遍加工过程中,在上面部分较小数据已经有序的情况下,不需要再进行n-i对数据的比较。如对“17, 18,19, 24, 23, 20”这6个数据排序中,第1遍排序结束后数据为“17,
18,19, 20, 24, 23”,第2遍排序时不再需要对20及其前面3个数据进行比较。以下程序实现了冒泡排序的优化,在横处填入合适的代码。
Dim n As Integer
Dim a(1 To 100) As Integer
’n=10,排序前生成的数据存储在数组a中,并在列表框List1中显示,代码略
Private Sub Command1_Click()
Dim i As Integer, j As Integer, start As Integer,
t As Integer
i=2
Do While i < n start=n
For j=n To i Step-1
If{#blank#}1{#/blank#}Then
t=a(j):a(j)=a(j-1):a(j-1)=t
{#blank#}2{#/blank#}
End If
Next j
i=start+1
Loop
For i=1 To n
List2.AddItem{#blank#}3{#/blank#}
Next i
End Sub