我建立了一个数据排序的对数,单个用于...循环 代码如下:
Private Sub Command1_Click()
Dim a(10) As Integer
For i = 0 To 10
a(i) = InputBox("enter a value")
Next
Dim counter As Integer
For i = 0 To 9
If a(i) > a(i + 1) And i > -1 Then
swap = a(i)
a(i) = a(i + 1)
a(i + 1) = swap
i = i - 2
End If
If i = -2 Then
i = i + 2
End If
counter = counter + 1
Next
For i = 0 To 10
Print a(i)
Next
MsgBox "this loop is runned " & counter
End Sub
此代码是用visual basic 6.0编写的 在这种情况下,此代码运行N次,但事实是,当数据按降序排列时,我们希望按升序转换它。那么这个对数将运行N * N次。意味着如果数组的限制为10,则运行100次。
如何在数组限制为10时不应该运行100次。
感谢您的帮助:
答案 0 :(得分:0)
您放在此处的代码示例似乎是冒泡排序的实现。你说冒泡排序对于反向排序列表非常无效是正确的。 (O(N ^ 2)时间的最坏情况)
排序是计算机科学中一个研究得很好的问题。做一个简短的搜索将向您介绍有关问题和可能的解决方案的各种讨论,以及他们已知的最佳(和最差)时间。
对于特定于视觉基础的排序,您可能会发现使用this forum thread。对我来说,重复这些内容而不用很长时间是不切实际的。可以说,那里有大多数众所周知的排序算法的实现。