标题基本算法简介(四)
栏目软件世界
作者黄陀
发布2001年25期
选择排序
选择排序的原理非常简单,就是找出最大数,然后把这个数和第一个数交换,然后找出第二大的数,再把这个数和第二个数交换……直到所有的数都排序完毕。
下面是选择排序的过程实例
原始数列:
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下载。