上次米老师上课,讲那个排序找最大的例子,他当场让我们用语言描述或是写代码,可是描述完全的人没有几个。想想为什么学了那么长时间的VB却连一个小例子都不能完整写出来。就是缺乏知识总结,就像米老师说的,每次听完课,感觉自己懂了,不去总结,导致懂的那一点点也不懂了。
昨晚,翻开书看看那个例子,看到排序的两种方法:选择排序和冒泡排序,米老师以前上课讲过这两种排序,但是听过了没总结,导致自己又花时间重新看了这个。这次要好好总结了。
以产生不相等的10个整数且从大到小排序为例。
选择排序
整体思路:
1.定义一个数组a()用来盛放这10个数
2.找10个数里的最大值,依次与剩下的9个数进行比较,将最大的放在a(1).
3.在剩下的9个数里找最大,依次与剩下的8个数进行比较,将最大值放在a(2).
4.按照这样一直比较下去.
5.最后一轮就剩下两个数比较大小,将大数放在a(9).小数放在a(10).这样10个数就排序完成了。
代码:
'从大到小排序
Dim a() As Integer
For i = 1 To 9 '比较大小
For j = i + 1 To 10
If a(i) < a(j) Then
t = a(i): a(i) = a(j): a(j) = t '进行交换
End If
Next j
Next i
冒泡排序
整体思路:
1.定义一个数组a()用来盛放这10个数
2.两个相邻的数进行比较,大数前移,小数后移。
3.继续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
4.每进行一轮,将产生一个最小值,第一轮最小值放在a(10),第二轮最小值放在a(9),依次进行下去,10个数就从大到小排序了。
代码:
Dim a() As Integer
For i = 1 To 9'比较大小 For j = 1 To 10 - 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