冒泡排序思想
大家可以把我们所有的需要排列的数字想象成一个水中的气泡,大的数字想象成大气泡,小的数字想象成小气泡。
其实冒泡排序就是比较相邻的两个数字的大小,然后大的数字排在小的数字的后面,我们依次比较,第一轮比较完成,最大的数字一定是排在我们整个列表的最后面,然后最后的一个数字,就不用纳入我们比较的范畴里面了,经过几轮后,所以的数字都会成一个有序的形状了。
代码实现
def bubble_sort(li):
"""
此函数为冒泡排序的代码
:param li:
:return:
"""
for i in range(len(li) - 1): # 第i趟
exchange=True # 设置判断标志
for j in range(len(li) - i - 1):
if li[j] > li[j + 1]:
li[j], li[j + 1] = li[j + 1], li[j]
exchange=False
if exchange: # 判断如果没有进行排序,说明无序区的代码已经排序好了
break
运行结果为
- 第一个是4和2比较,4大于2,所以4和2交换位置。
- 第二行4和2比较,4大于1,交换位置
- 第三行4和5比较,4小于5,所以不用交换位置
大家能够在我的代码当中看到,我设置了exchange这个参数,这个参数的含义就是,在一轮的交换当中,只要交换了位置,我就将exchange这个参数令为False,在后方就不会跳出for循环,说明还有数据不是排序好的,只要我们在一轮交换数据中,有数据没有交换,我们就会终止for循环,这样大大的节约了我们的代码运行时间。