冒泡排序,按照从大到小(或从小到大)的顺序,比较相邻的元素。如果第一个比第二个大,就交换他们两个。就像水泡从底向上冒泡一样,把最大(或最小)的数冒出来。仍然举下面这个例子:
10个数按照从大到小的顺序排列,首先第一个数和第二个数比,如果第二个数大则两个数互换位置,否则则位置不变;依次类推,这样比较9次之后,第一个数就是最大的数了。把最大的数找到之后,其他数仍然按照这个规则比较,最终就能做出排序。
如下示例:随机一个列表,要求按照冒泡排序从大到小排序。
按照上面的讲的冒泡排序方法,先比较第一个数和第二个数,如果第一个数大则位置不变,第二个数大则互换位置。很显然找最大数的时候需要冒4次,找第二大数的时候只需要冒3次,依次类推。
我们这里要定义一个临时变量,临时变量的目的就是存储当前最大的数,以达到列表相邻之间交换的目的。代码如下:
这就是冒泡法。冒泡法和选择排序法,是计算机排序中最基础的排序方法,也是比较常用的方法,在考试中经常会考到,学生们一定要掌握其原理,切不要生记硬背。
这两个排序方法,在效率上都属于略低效的排序方法。我们会在今后的高级学习中讨论其效率问题。