基本算法简介(三) 黄陀 2001年 24期 在统计中,我们常常需要对数据进行排序。而计算机排序涉及多种排序算法,这里就最常用的算法做一个介绍。需要说明的是,各种排序算法各有所长,同一排序算法对不同性质、类型的数列排序的效率是不同的(下面的排序算法是以从大到小排序为例)。   #1冒泡排序   如果数列乱序较多的话,这种算法效率很低。而如果乱序的数据较少,这种算法很快。   #1基本原理   检查整个数列,如果两个相邻的数乱序的话,交换这两个数,然后继续扫描,直到没有数乱序为止。   下面是一个冒泡排序的过程实例。   原始数据:   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就像水中的气泡一样不断上升到最前,这就是这种排序算法名称的由来。   #1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下载。