admin 管理员组文章数量: 1184232
2024年3月27日发(作者:linux版本有哪些)
冒泡法:
(1) 从第一个元素开始,将相邻的数比较,若为逆序,
就交换,比较完一轮,最大的数已沉底,成为数组中的
最后一个元素a(n)
(2) 对a(1)和a(n-1)的n-1个数进行同(1)的操作,次
大的数放入a(n-1)中,完成第二轮排序。
(3) 进行n-1轮排序,所有的数排序完毕。
Dim a%(), i%, j%, n%
For i = 1 To n - 1
For j = 1 To n - i
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
For i = 1 To n
Print a(i);
Next i
顺序交换法:
(1) 从第一个元素开始,将它和其后的每个元素进行
比较,若为逆序,就交换,比较完一轮,a(1)成为数
组中的最小的元素。
(2) 对a(2)和a(n)的n-1个数进行同(1)的操作,次
小的数放入a(2)中,完成第二轮排序。
(3) 进行n-1轮排序,所有的数排序完毕。
Dim a%(), i%, j%, n%
For i = 1 To n - 1
For j = i + 1 To n
If a(i) > a(j) Then
t = a(i): a(i) = a(j): a(j) = t
End If
Next j
Next i
选择法
(1) 从n个数的序列中选出最小的数,与第1个数交换
位置;
(2) 除第1个数外,其余n-1个数再按(1)的方法选出
次小的数,与第2个数交换位置;
(3) 重复(1)n-1遍,最后构成递增序列。
Dim a%(), i%, j%, n%
For i = 1 To n – 1
k=i
For j = i + 1 To n
If a(j) < a(k) Then k=j
Next j
if k<>i then t=a(i): a(i)=a(k): a(k)=t
Next i
插入法:
1. 找到插入数在数组中的位置i
2. 将从n到i的每个元素向后移动一个位置
3. 插入数
插入法1:将一个数插入到有序数列,使插入后数列仍然有序
Dim a(1 To 10) As Integer
Key = Val(InputBox("输入一个数"))
For i=1 to 9
If a(i)>Key Then Exit For
next i
For k = 9 To i Step -1
a(k + 1) = a(k)
Next k
a(i) = Key
插入法2: 用上面的插入方法将一批数排序(从小到大),设数
列中开始只有一个元素。
Dim x(1 To 10) As Integer
For i = 1 To 9
Key = x(i + 1)
j = 1
Do While (Key >= x(j) And j <= i)
j = j + 1
Loop
For k = i To j Step -1
x(k + 1) = x(k)
Next k
x(j) = Key
Next i
版权声明:本文标题:vb常用排序法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711519454a598057.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论