VB中的冒泡排序在最坏情况下的比较次数是n(n-1)⼀2 为什么?什么是最坏的情况?

2024-11-30 07:18:35
推荐回答(1个)
回答(1):

1.比如把5个任意不同数字按大到小排序
(54312)-->1次交换就可以达到,但我们程序中要考虑所有情况的,就是所谓的最坏打算...为了保证交换有效,肯定要做最坏打算的.(如果最坏打算都可以达到,就能满足所有情况了)

如果有N个数字排序
我们首先拿第一位置排序和其他所有位置比较,要比较N-1次.
第二个数和后面所有数字比较,比较N-2次
...
第N-1个数字和后面数比较,比较1次
第N个数字和后面所有数字比较,比较0次...(因为前面所有数字都排序好了,不用比较它就是最小的数字了)
a(N)'存在N个数字

Private Sub Form_Load()
Dim i As Long, j As Long, k As Long
Dim a() As Long
Dim N As Long

N = 10 '存在N个数字
ReDim a(N)
For i = 1 To N
a(i) = Rnd * 100 '随机赋值
Next

For i = 1 To N '第I个数字
For j = i + 1 To N ' 需要和后面的依次比较

'这里一共需要执行n(n-1)/2 次
If a(i) < a(j) Then
k = a(i)
a(i) = a(j)
a(j) = k
End If
Next
Next

For i = 1 To N
Debug.Print a(i) '输出结果查看
Next
End Sub
'这样,无论开始怎么排序,经过比较后都可以按要求排序