冒泡排序是大多学人学到的第一个排序,教科书上在众多的排序算法中选择它作为示例,我想还是因为它够简单,易于理解吧。
假设有下面一组数据,需要从小到大升序排列。
冒泡排序的算法是
1. 从左到右,依次比较相邻两个位置的数据,如果左边的数值较大,就交换它们,这样在单轮操作中,最大的数会交换到最右边。
2. 重复多轮操作,重复的次数和数组的长度相同。
3. 排序完成。
冒泡排序的过核心思想就是 交换。
通过交换,可以保证每一轮操作,将最大的数挪到最右边,这有点像池塘里面水泡从淤泥中浮出水面的过程,所以它叫冒泡排序。
以图例来说明就非常简单了。
假设我们要对数组[7 1 12 6]
排序
图例示意:
我们先看每一轮的操作
用红框标出每次两两交换的数据,可以看到比较到最后,12 排到了最上面的位置。
我们再看整个过程:
每一次都有数据冒泡到最右边,最后一次操作,比较时已经不再需要做交换了。
Python 代码演示:
def bubble_sort(srcArr):
size = len(srcArr)
for i in