请教:用vb举一个最简单的例子说明冒泡排序法的用法,谢谢。

如题所述

第1个回答  2011-07-15
首先你明白冒泡排序的机制吧,每个元素后边得元素比较,如果小于后边的,则交换位置
Private Sub SortIntegerArray(paintArray() As Integer)
Dim lngX As Long
Dim lngY As Long
Dim intTemp As Integer
For lngX = LBound(paintArray) To (UBound(paintArray) - 1)
For lngY = LBound(paintArray) To (UBound(paintArray) - 1)
If paintArray(lngY) > paintArray(lngY + 1) Then
intTemp = paintArray(lngY)
paintArray(lngY) = paintArray(lngY + 1)
paintArray(lngY + 1) = intTemp

End If
Next
Next

End Sub追问

您好,我很难看懂你的代码,请您举一个具体的例子。(比如对含有1、8、2、3、9等元素的数组进行按升序排列)

追答

这不怪你,上边的有笔误,看下面的,冒泡的就是让大的沉底,轻的上浮
Public Sub BubbleSort1(ByRef paintArray() As Integer)
Dim i As Long
Dim iMin As Long
Dim iMax As Long
Dim intTemp As Integer
Dim blnSwapped As Boolean

iMin = LBound(paintArray)
iMax = UBound(paintArray) - 1
Do
blnSwapped = False
For i = iMin To iMax
If paintArray(i) > paintArray(i + 1) Then
intTemp = paintArray(i)
paintArray(i) = paintArray(i + 1)
paintArray(i + 1) = intTemp
blnSwapped = True
End If
Next
'看里边的折冲循环就是比较相邻的数,大往后排
'第一次结果是1,2,3,8,9(其实你给的数一次就排好了),第一循环保证最大的数在末尾

iMax = iMax - 1'第二次不需要排最后的了,前边的再继续排,一次类推。你这里第二次循环没有交换数据所以blnSwapped =false退出外层do循环,排序结束
Loop Until Not blnSwapped
End Sub
冒泡排序演算法的運作如下:

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
由於它的簡潔,冒泡排序通常被用來對於程式設計入門的學生介紹演算法的概念。

能详细的告诉我 VB 里冒泡排序法么?最好要有个详细的举例。
Private Sub Command1_Click()Dim a(1 To 5) As Integer For i = 1 To 5 a(i) = Int(Rnd * 100)Print a(i);Next i For i = 5 To 2 Step -1 For j = 1 To i - 1 If a(j) > a(j + 1) Then temp = a(j): a(j) = a(j + 1): a(j + 1) = temp End ...

vb冒泡法是怎么回事
1)有n+1个数(存放在数组a(n)中),第一趟将每相邻两个数比较,大的调到后头,经n次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2)第二趟对余下的n个数(最大的数已“沉底”)按上法比较,经n-1次两两相邻比较后得次大的数;3)依次类推,n+1个数...

vb中冒泡排序法详解
书上讲的是不容易理解我来给你说下比如 3,1,2,5,6,4 为例首先把数按顺序赋给数组 a(1~6) 不难吧然后给你提一点冒泡法最后一个数会确定下来第一个数,来下面:从大到小排: 1。for i = 1 to 6 2。 for j=i to 6-i 3。 if a(j)...

在VB编程中求最大和最小数
首先,我们需要一个数组来存储这些数。例如,我们有五个数:X[1] = 2, X[2] = 5, X[3] = 1, X[4] = 4, X[5] = 3。我们将这些数赋给数组。然后,我们开始冒泡排序过程。在这个过程中,我们不断地比较相邻的两个元素,如果它们的顺序不正确(即第一个数大于第二个数),我们就交换...

vb冒泡法排序
冒泡排序法是一种简单直观的排序算法,以不断比较相邻元素并交换它们的顺序,直到整个序列有序完成排序。以下是VB语言中实现的冒泡排序算法的升序排序。定义一个子过程 PopoAsc,接收两个参数,第一个参数 Bobo() 为一个字符串数组,第二个参数 m 为数组的大小。在子过程内部,使用两个嵌套循环,外层...

求VB冒泡程序代码,详细点的,最好配图谢谢
sub function 冒泡排序(byref b() , byval n0 as integer, byval n1 as integer)' 冒泡排序之升序 '参数:b() 数组,此处使用变体类型,效率低但通用,必须是地址传递参数 ' n0,n1 数组元素的起止索引,整型,dim i as integer dim j as integer dim Tme '作为交换值的变量,与b类型同...

谁给我解释一下冒泡排序和选择排序,最好有程序举例
冒泡法排序:将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的...

用VB,把ABC3个数字从大到小排序,高手写下程序,谢谢!
冒泡排序:Private Sub Command1_Click()Dim s As String s = "CAB"For i = 1 To 3 For j = 3 To i + 1 Step -1 If Asc(Mid(s, j, 1)) > Asc(Mid(s, j - 1, 1)) Then t = Mid(s, j, 1)Mid(s, j, 1) = Mid(s, j - 1, 1)Mid(s, j - 1, 1) = t...

VB冒泡排序法
我每次的做法是:for i=0 to 4 for j=i+1 to 4 if a(j)< a(i) then 交换 next next

冒泡排序法,思路详解
冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮...

相似回答