循环列表中的数字,两两比较,把大的放到后面
以下图为例:
第一轮比较
- 第一次比较,先比较第一个和第二个,第二个比第一个小,不做交换
- 第二次比较,再比较第二个和第三个,发现56比3大,所以把56放到后面
- 第三次比较,再比较第三个和第四个,第三个还是比第四个大,那么交换顺序
- 第四次比较,再比较第四个和第五个,发现第五个大,所以不做交换,至此最大值以确定
第二轮比较
- 第一次比较,32比3大,交换位置
- 第二次比较,32比24大,交换位置
- 第三次比较,32比56小,不变。
- 因为第一轮比较已经确定最后一个为最大数,所以第二轮比较次数要减掉已经比较的轮次
以此类推
代码
def bubbleSort(arr):
# 先判断列表中的所有元素是不是都是int类型
for n in arr:
if isinstance(n, int):
pass
else:
return False
# 确定比较轮次
for i in range(1,len(arr)):
# 确定从0的位置开始比较,结束位置为总长减掉已比较的次数
for j in range(0,len(arr)-i):
# 第n个和n+1个比较,如果第一个比第二个大,则交换位置
if arr[j] > arr [j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr