VB常用算法(六)排序
1.算法描述
1)按选择方法排序
(1)从N个数中选择最小数的下标,遍历循环,将最小数与第一个数交换位置;
(2)除第一个数外,按方法(1)从剩余的n-1个数中选择下一个最小的数,与第二个数交换位置;
(3)以此类推,最终形成一个递增序列。
例如:
8 6 9 3 2 7
在第一次交换后2 6 9 3 8 7
在第二次交换之后2 3 9 6 8 7
第三轮交换后2 3 6 9 8 7
第四次交换后2 3 6 7 8 9
第五轮没有交换2 3 6 7 8 9
程序代码如下:
Private Sub xzPaiXu(a()为Double,sheng为Boolean)
'a是要排序的数组;如果盛为真,则按升序排序;如果SHENG为False,则按降序排序。
Dim i为整数,j为整数
Dim temp为Double
Dim m为整数
for I = lbound (a)到ubound (a) -1 '用于数组大小-1轮比较。
m = i '在第I轮比较中,假设第一个
'i元素是最有价值的元素。
For j = i+1 To UBound(a)'找出剩余元素中最多的元素
'下标的值元素,并以m记录它。
如果sheng Then '在升序中,m记录最小的元素。
'下标,否则将记录元素下标。
如果a(j) < a(m),则m = j
其他
如果a(j) > a(m),则m = j
结束If
接下来j '与第I个元素交换最有价值的元素。
temp = a(i)
a(i) = a(m)
a(m) = temp
接下来我
End Sub
0条评论