一、冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、冒泡排序的代码:
1 ls = [10,7,8,2,4,3,9,6,5,1,0]
2 for i in range(len(ls)-1): #外部循环,每循环一次,找到一个最大的元素放在后面,循环次数为len(ls)-1
3 for j in range(len(ls)-i-1):#内部循环,使一个最大的元素跑到最后面
4 if ls[j] > ls[j+1]:
5 temp = ls[j]
6 ls[j] = ls[j+1]
7 ls[j+1] = temp
8 print(ls)
二、冒泡排序注意点:
有两层循环,我称为内部循环和外部循环
内部循环:每循环一次,就找出循环列表中最大的元素,把它放在最后面。
第一次循环:从第一个元素开始,把每一对相邻的元素作比较,前者大于后者的话,交换位置。依次比较,直到把列表的所有元素都比较一遍,筛选出最大的元素 10,把它放在列表的最后一个位置;(理解为第一个冒泡)
第二次循环:(不包含已经冒出泡的元素)从剩余的第一个元素开始,把每一对相邻的元素作比较,前者大于后者的话,交换位置。依次比较,直到把列表剩余的元素都比较一遍,选出最大的元素9,放在倒数第二个位置;(第二个冒泡)
......
直至循环完成
外部循环:主要控制内部循环的次数,列表如果有n个元素,就需要冒泡n-1次,把每一个大的元素放在对应的位置上。剩下的最后一个,就是最小的,肯定在第一个位置,就不用比较了。