基本算法简介(三)

在统计中,我们常常需要对数据进行排序。而计算机排序涉及多种排序算法,这里就最常用的算法做一个介绍。需要说明的是,各种排序算法各有所长,同一排序算法对不同性质、类型的数列排序的效率是不同的(下面的排序算法是以从大到小排序为例)。
  #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下载。