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

 我来答
尚子素
2011-07-15 · TA获得超过600个赞
知道小有建树答主
回答量:566
采纳率:33%
帮助的人:200万
展开全部
首先你明白冒泡排序的机制吧,每个元素后边得元素比较,如果小于后边的,则交换位置
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
冒泡排序演算法的運作如下:

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
由於它的簡潔,冒泡排序通常被用來對於程式設計入門的學生介紹演算法的概念。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式