1. 算法概述
冒泡排序(Bubble Sort)是借助“交换”进行排序的算法。
冒泡排序的过程很简单。首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即L.r[1].key > L.r[2].key),则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。依次类推,直至第n-1个记录和第n个记录的关键字进行过对比为止。上述过程称作第一趟冒泡排序,其结果使得关键字最大的记录被安置到最后一个记录的位置上。然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,其结果是使得关键字次大的记录被安置到第n-1个记录的位置上。随着冒泡排序的进行最后整个序列成为一个有序的序列。显然,判别冒泡排序结束的条件应该是“在一趟排序过程中没有进行过交换记录的操作”。
下面展示了冒泡排序的一个实例。
2. 算法分析
分析冒泡排序的效率,容易看出,若初始序列为“正序”,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动记录;反之,若初始序列为“逆序”序列,则需要进行n-1趟排序,需进行n(n-1)/2次比较,并作等数量