• 【python入门到放弃】冒泡排序


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

    二、冒泡排序的代码:
    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次,把每一个大的元素放在对应的位置上。剩下的最后一个,就是最小的,肯定在第一个位置,就不用比较了。
      
     
  • 相关阅读:
    机器学习:特征选择方法简介
    VS快捷键
    非常适用的Sourceinsight插件,提高效率【强力推荐】
    Linux静态库和共享库
    C/C++ 位域知识小结
    __BEGIN_DECLS 和 __END_DECLS
    C语言可变参数va_list
    mac的terminal快捷键
    linux进程、线程与cpu的亲和性(affinity)
    C++ Singleton (单例) 模式最优实现
  • 原文地址:https://www.cnblogs.com/chenglei0520/p/9430661.html
Copyright © 2020-2023  润新知