冒泡排序

冒泡排序:

  以从小到大排序示例:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

例:对[2,1,3,5]进行排序:

步骤:

  第一圈:
  [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)

总结规律
圈数  是元素个数减一
次数  元素个数 - 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] 成功实现

 

 
 
 
posted @ 2019-07-30 20:11  速8赛亚人  阅读(112)  评论(0编辑  收藏  举报