标题基本算法简介(三)
栏目软件世界
作者黄陀
发布2001年24期
在统计中,我们常常需要对数据进行排序。而计算机排序涉及多种排序算法,这里就最常用的算法做一个介绍。需要说明的是,各种排序算法各有所长,同一排序算法对不同性质、类型的数列排序的效率是不同的(下面的排序算法是以从大到小排序为例)。
冒泡排序
如果数列乱序较多的话,这种算法效率很低。而如果乱序的数据较少,这种算法很快。
基本原理
检查整个数列,如果两个相邻的数乱序的话,交换这两个数,然后继续扫描,直到没有数乱序为止。
下面是一个冒泡排序的过程实例。
原始数据:
7 5 3 9
第一次发现3<9,交换3、9,数列变为:
7 5 9 3
第二次发现5<9,交换5、9,数列变为:
7 9 5 3
第三次发现7<9,交换7、9,数列变为:
9 7 5 3。
观察这四个数列,可以看见:9就像水中的气泡一样不断上升到最前,这就是这种排序算法名称的由来。
Visual Basic源代码如下:
Option Explicit
Dim a() As Single
Dim i, n As Integer
Private Sub Form_Load()
Dim temp As Single
n = InputBox("请输入数据的个数")
ReDim a(n) As Single '定义动态数组
For i = 1 To n
a(i - 1)= InputBox("请输入数据" & Str(i),Data,0)
Next i
10 For i = 0 To n - 1
If a(i)< a(i + 1) Then '如果出现乱序
'交换数据
temp = a(i)
a(i) = a(i + 1)
a(i + 1)= temp
End If
Next i
For i = 0 To n - 1 '检查是否仍然有乱序
If a(i)< a(i + 1) Then GoTo 10
Next i
For i = 0 To n - 1
Label1.Caption = Label1.Caption + Str(a(i)) '输出
Next i
End Sub
源代码可以在http://go8.163.com/~betterprogram下载。