有一张图能让你快速弄懂冒泡排序,它的原理、步骤还有Python实现全都能看明白。冒泡排序,英文名叫Bubble Sort,这名字其实就是因为它的工作方式很像水泡往上升,小的数会慢慢浮到数列的顶上,大的数就沉到底下。每一轮跑完,最大的数就像碳酸饮料里的泡泡一样冒到了最右边。 这就好比给一个杂乱的数字列表排成顺序。比如我给你一组原始数据:10, 17, 50, 7, 30, 24, 27, 45, 15, 5, 36, 21,一开始它们就是这样排列的。 接下来我们用升序的思路来操作,也就是把大的元素往右推。在第一轮里,从头开始一个一个比较相邻的两个数,只要顺序不对就交换位置。比如10比17小不用动;17比50小也不动;但50比7大,所以得交换位置。这轮结束后,最大的数50就被推到最右边了,整个数列变成了10 17 7 30 24 27 45 15 5 36 21。因为最大的数已经固定了位置,下一轮比较的范围就可以少一个元素。 第二轮的时候也是从头开始比,不过这次只要比前n-1个就够了。比如45和15比较一下,发现45更大就交换位置。接着继续往右推大的数,直到这一轮也没有可以交换的元素了为止。 后面的轮次就是重复这个过程,每一轮都把次大的元素往右挪一个位置。等所有元素都比较完一遍后,整个列表就按从小到大排好了顺序:5, 7, 10, 15, 17, 21, 24, 27, 30, 36, 45, 50。整个过程就像是水泡一个接一个地浮到水面上一样自然。 至于Python代码实现的话,主要是用了两层for循环。外面那层循环决定要“冒泡”多少次,也就是轮数;里面那层循环决定每一轮要比较多少个元素,从左到右逐个减少比较的范围。 看懂这些逻辑很容易,真正掌握还得动手敲代码。千万别觉得自己看明白了就不去写,只有把每一步都跑通了才能真正学会冒泡排序这个方法。