冒泡排序:
以从小到大排序示例:
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
例:对[2,1,3,5]进行排序:
步骤:
第一圈:
[2,1,3,5]
第一次 得出2的位置
[2,1,3,5]
第二次
[2,3,1,5]
第三次
[2,3,5,1] 次数为 元素个数 - 1 - (圈数索引为0)
[2,1,3,5]
第一次 得出2的位置
[2,1,3,5]
第二次
[2,3,1,5]
第三次
[2,3,5,1] 次数为 元素个数 - 1 - (圈数索引为0)
第二圈:
[2,3,5,1]
第一次
[3,2,5,1]
第二次
[3,5,2,1] 次数为 元素个数 - 1 - (圈数索引为1)
第三圈:
[3,5,2,1]
第一次
[5,3,2,1] 次数为 元素个数 - 1 - (圈数索引为2)
[3,5,2,1]
第一次
[5,3,2,1] 次数为 元素个数 - 1 - (圈数索引为2)
总结规律
圈数 是元素个数减一
次数 元素个数 - 1 - (圈数索引)
我们需要两层循环
一层控制圈数
一层控制次数
ls = [3,4,6,1,2,8,4,2]
# 模板啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊 for i in range(len(ls)-1): for j in range(len(ls)-1-i): # 如果前面的小于后面的则交换位置 if ls[j] > ls[j+1]: ls[j],ls[j+1] = ls[j+1],ls[j] print(ls) # [1, 2, 2, 3, 4, 4, 6, 8] 成功实现