发一段以前写的冒泡排序,FOR Basic
Option Explicit Private Sub Fir_Sort() Dim vArr As Variant, lngIndex As Long, lngMax As Long, lngTmp As Long vArr = Array(1999, 2000, 2008, 2009, 2007, 2006, 2003, 2004, 2005, 2001, 2002) lngMax = UBound(vArr) For lngIndex = 1 To lngMax For lngTmp = lngIndex - 1 To lngMax Fir_SwapB2S CLng(vArr(lngIndex - 1)), CLng(vArr(lngTmp)) Next Next For lngIndex = 0 To lngMax Debug.Print vArr(lngIndex) Next End Sub Private Sub Fir_SwapB2S(lngA As Long, lngB As Long) If lngA < lngB Then Dim lngTmp As Long lngTmp = lngA: lngA = lngB: lngB = lngTmp End If End Sub Private Sub Fir_SwapS2B(lngA As Long, lngB As Long) If lngA > lngB Then Dim lngTmp As Long lngTmp = lngA: lngA = lngB: lngB = lngTmp End If End Sub Private Sub Form_Load() Call Fir_Sort End Sub |



@怡红公子 内置函数不能解决一切的,不是么?
@苏洋
汗颜,原来一直都没有看到Private Sub,现在看下,思路明朗了许多!^_^
@怡红公子
嗯,自定义函数..
@苏洋
swap什么的都是你定义的事件么,我怎么觉得我在vb里面没看到过额…..
不用第三个变量的方法想了好久都没想出来,太笨了,唉!
@怡红公子 其实就是简单的交换数值,有个不用第三个变量的方法。想想咯~
‘调用排序函数,从大到小排序,排序传入参数转换为LONG
Fir_SwapB2S CLng(vArr(lngIndex – 1)), CLng(vArr(lngTmp))
‘排序函数,从大到小排序
Fir_SwapB2S
‘排序函数,从小到大排序
Fir_SwapS2B
Fir_SwapB2S CLng(vArr(lngIndex – 1)), CLng(vArr(lngTmp))
Fir_SwapB2S
Fir_SwapS2B
这些怎么都看不懂??
干脆你以后都写注释语句吧,嘻嘻……
这个这个,冒泡泡,老师讲过!兴奋中,先占沙发,再看!