基本算法简介(四)

选择排序
   选择排序的原理非常简单,就是找出最大数,然后把这个数和第一个数交换,然后找出第二大的数,再把这个数和第二个数交换……直到所有的数都排序完毕。
  #2 下面是选择排序的过程实例
   原始数列:
   5 -10 9 7
   找出最大数9,与第一个数5交换,得到:
   9 -10 5 7
   找出第二大数7,与第二个数-10交换,得到:
   9 7 5 -10
   找出第三大数5,与第三个数5(本身)交换,得到:
   9 7 5 -10
   这种排序方法对少量数据排序很快。
   代码如下。
   Dim a() As Single
   Dim i, j, k, l, n As Integer
   Private Sub Form_Load()
   Dim max, temp, minn As Single
   n = InputBox(“请输入数据的个数”)
   ReDim a(n) As Single
   minn = 0
   For i = 1 To n
   a(i - 1) = InputBox(“请输入数据” & Str(i), Data, 0)
   If a(i - 1)< minn Then minn = a(i - 1) '找出最小值
   Next i
   k = 0
   Loop10: max = minn - 1 '初始化最大数
   For i = k To n - 1 '从已经排序的后一个数开始排序,即从第k+1个数开始排序
   If a(i) > max Then
   max = a(i) '记录最大数
   l = i '记录最大数的号码
   End If
   Next i
   '交换数据
   temp = a(l)
   a(l) = a(k)
   a(k) = temp
   k = k + 1 '又排好一个
   If k < n - 1 Then GoTo Loop10 '如果没有全部排好则继续排
   For i = 0 To n - 1
   Label1.Caption = Label1.Caption + “ ” + Str(a(i)) '输出
   Next i
   End Sub
   源代码可以在http://go8.163.com/~betterprogram下载。