能详细的告诉我 VB 里冒泡排序法么?最好要有个详细的举例。

作者&投稿:微沸 (若有异议请与网页底部的电邮联系)
VB冒泡排序算法~

Option Base 1
Private Sub Command1_Click()
Dim a
Dim b As Integer
Dim i As Integer
Dim j As Integer
a = Array(6, 3, 7, 8, 2, 1)
Print "排序前为";
For i = 1 To 6
Print a(i);
Next i
For i = 1 To 5
For j = 1 To 6 - i
If a(j) > a(j + 1) Then
b = a(j + 1)
a(j + 1) = a(j)
a(j) = b
End If
Next j
Next i
Print
Print "排序后为";
For i = 1 To 6
Print a(i);
Next i
End Sub

就是比较数值,把大的或小的放在前面
比如,有一个数组a()包含{5,7,3,9,12,15,56}7个数
dim t as integer
for i=0 to a.count-1
for j=i+1 to a.count-1
t=a(i)
if a(i)<a(j) then
a(i)=a(j)
a(j)=t
next
next
这时比较排序法
下面是冒泡排序
Private Sub Form_Load()

  Dim a,c As Variant

  Dim i As Integer,j As Integer,temp As Integer,bSwap As Boolean

  a = Array(17,45,12,80,50)

  For j = 0 To UBound(a) - 1

  bSwap = False

  For i = 0 To UBound(a) - 1

  If (a(i) > a(i + 1)) Then '若是递减,改为a(i)<a(i+1)

  temp = a(i)

  a(i) = a(i + 1)

  a(i + 1) = temp

  bSwap = True

  End If

  Next

  If bSwap = False Then

  Exit For

  End If

  Next

  For Each c In a

  Debug.Print c;

  Next

  End Sub

冒泡现象的本质是因为重的要沉下去,所以轻的只好浮上来。冒泡排序法的过程为:对于数组的n个元素,从第1个起,每个与其下一个作比较,如果下一个的值小,就交换着两项的值。直到倒数第2个与最后一个比较完之后,数组中的最大数(或最小数)就被放到了最后一个位置(或第一个位置),然后对浮上来(或者浮下去)的这一部分进行同样的操作,直到浮上来(或者浮下去)的元素只剩下1个时,排序即完成。
冒泡排序法是最简单的排序法,但也是效率最低的排序法。
一个程序如下:
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 If
Next j
Next i

Print
For i = 1 To 5
Print a(i);
Next i
End Sub

下面的是从小到大排序的,从大到小只需改一个“>”号,看下面的注释,整个过程不变的。

Private Sub Command1_Click()
Dim x(1 To 5) As Double, i%, j%, t
x(1) = 123
x(2) = 321
x(3) = 65
x(4) = 234
x(5) = 333
For i = 1 To 5 - 1 '有5个数要排序,需要进行5-1=4次两两比较
For j = 5 To i + 1 Step -1 '从末尾一个元素到第i个元素进行两两比较
If x(j) < x(j - 1) Then '从小到大排序,若需要从大到小排序,将“<”改为“>”
'若次序不对,则马上交换位置
t = x(j)
x(j) = x(j - 1)
x(j - 1) = t
End If
Next j '除了内循环,一轮排序结束,最小(或最大)数已经冒到数组第一位
Next i
End Sub


崇左市15755865345: VB 里冒泡排序法么?最好要有个详细的举例. -
祁和青霉:[答案] 下面的是从小到大排序的,从大到小只需改一个“>”号,看下面的注释,整个过程不变的.Private Sub Command1_Click()Dim x(1 To 5) As Double, i%, j%, tx(1) = 123x(2) = 321x(3) = 65x(4) = 234x(5) = 333For i = 1 To...

崇左市15755865345: 能详细的告诉我 VB 里冒泡排序法么?最好要有个详细的举例. -
祁和青霉: 下面的是从小到大排序的,从大到小只需改一个“>”号,看下面的注释,整个过程不变的.Private Sub Command1_Click() Dim x(1 To 5) As Double, i%, j%, t x(1) = 123 x(2) = 321 x(3) = 65 x(4) = 234 x(5) = 333 For i = 1 To 5 - 1 '有5个数要排序...

崇左市15755865345: 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)

崇左市15755865345: vb冒泡法排序步骤 -
祁和青霉: dim A(10) as integer dim I,J as integer dim temp as integer '临时交换用 '初始化随机函数 randmize '取10个随机数(范围100以内)并存放到数组中 for I=0 to 9A(I)=Int(Rnd*100) next I '开始冒泡排序 for I=0 to 8for J=I+1 to 9'冒泡原理(大的数下沉,小的数上浮)即(如果前面的大于后面的数,两者交换)if A(I)>A(J) then temp=A(I):A(I)=A(J):A(J)=tempnext J next I

崇左市15755865345: VB的简单冒泡排序 -
祁和青霉: 原因有二,一是你没把变量赋值(因此输出全是0),二是你的程序有些错误,应该是a(i)而不是a(1). 下面为修改后的程序.Private Sub Command1_Click() Dim a(30) As Integer Dim i, j, tem As Integer Const n = 30 '给a(i)赋值 For i = 1 To n a(i...

崇左市15755865345: VB中冒泡法排序的步骤?(重要的是步骤) -
祁和青霉: for i=lbound(marr) to ubound(marr)-1 for k=ubound(marr) to i+1 if marr(k)>marr(k-1) then temp=marr(k):marr(k)=marr(k-1):marr(-1)=temp next k next i

崇左市15755865345: VB 冒泡法排序 -
祁和青霉: Private Sub Command1_Click() Dim a!(4), i& For i = 0 To 4 a(i) = inputbox("输入第" i+1 & "个数") Print a(i); Next Print Func a, 0 For i = 0 To 4 Print a(i); Next End Sub'冒泡排序 Sub Func(a!(), F&) Dim b!, c!, i& Dim flg As Boolean flg = ...

崇左市15755865345: VB里的冒泡法怎么编程序请高手帮忙谢谢了!!
祁和青霉: Private Sub Command1_Click() '以十个整数由小到大进行排序为例,说明冒泡法biancheng Dim a(1 To 10) As Integer Dim i As Integer, j As Integer, t As Integer For i = 1 To 10 a(i) = Val(InputBox("请输入十个整数")) Next i For i = 1 To 9 For j ...

崇左市15755865345: 急!怎样用VB程序来表示冒泡排序(从1排到10)? -
祁和青霉: 在VB中演示过程冒泡法排序 要求把代码输入后能直接在VB环境中运行 在窗体中添加三个标签,一个按钮,一个框架在框架中添加一个文本框 Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode57 And KeyCode150 ...

崇左市15755865345: VB冒泡排序算法
祁和青霉: private sub form_click() dim temp as integer dim a(1 to 10) as integer for i=1 to 10 a(i)=inputbox("请输入") next i for i=10 to 2 step -1 for j=1 to i -1 if a(j)>a(j+1) then temp=a(j+1) a(j+1)=a(j) a(j)=temp end if next j next i print "经过冒泡排序,得出结...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网