为什么有这么多的排序算法
首先,在计算机编程中排序是一个经常遇到的问题
数据只有经过排序后,才更有意义
其次,排序算法说明了许多重要的算法的技术,例如二进制细分,递归和线性添加
最后要说明的一点是不同的算法有不同的优缺点,没有一种算法在任何情况下都是最好的算法
汽泡排序法 该算法是专门针对已部分排序的数据进行排序的一种排序算法
如果在你的数据清单中只有一两个数据是乱序的话,用这种算法就是最快的排序算法
如果你的数据清单中的数据是随机排列的,那么这种方法就成了最慢的算法了
因此在使用这种算法之前一定要慎重
这种算法的核心思想是扫描数据清单,寻找出现乱序的两个相邻的项目
当找到这两个项目后,交换项目的位置然后继续扫描
重复上面的操作直到所有的项目都按顺序排好
图 1 是对这种算法的说明
在该例中,数字 1 的未按顺序排好
第一次扫描清单时,程序找到4 和 1 是两个相邻的乱序项目,于是交换它们的位置
以此类推,直到将所有的项目按1234 排好
数字 1 就象上升的汽泡一样,这就是这一算法名称的由来
2221 3312 4133 1444 图 1
你可以改进该算法,让程序自下而上开始扫描,这样只须一次就能排好顺序了
下面是用 VB 代码实现这一算法的例子: ' min and max are the minimum and maximum indexes ' of the items that might still be out of order
Sub BubbleSort (List() As Long, ByVal min As Integer, _ ByVal max As Integer) Dim last_swap As Integer Dim i As Integer Dim j As Integer Dim tmp As Lo