两种常见排序算法

来源:互联网 发布:北京师范学校网络教育 编辑:程序博客网 时间:2024/05/22 01:31

        上次米老师上课,讲那个排序找最大的例子,他当场让我们用语言描述或是写代码,可是描述完全的人没有几个。想想为什么学了那么长时间的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

 

原创粉丝点击