Python算法实战:冒泡

  • A+
所属分类:python数据分析

Python算法实战:冒泡

作者:安生

来源:https://blog.ansheng.me/article/python-algorithm-combat-series-bubble/

冒泡算法即冒泡排序,其目的就是为一个无序的列表排成有序的,从大到小或从小到大都可以。

题外话

  • 变量位置的互换

假设现在有两个变量a1与a2:

  1. a1=123

  2. a2=456

如何调换这两个变量的位置,即结果就是让 a1=456a2=123

解:添加一个中间变量temp,其过程如下:

  1. a1=123

  2. a2=456

  3. print("a1 =",a1," ","a2 =",a2)

  4. temp=a1

  5. a1=a2

  6. a2=temp

  7. print("a1 =",a1," ","a2 =",a2)

输出结果为:

  1. C:Python35python.exe F:/Python_code/Note/maopao.py

  2. a1 = 123 a2 = 456

  3. a1 = 456 a2 = 123

  4. Process finished with exit code 0

  • 列表位置的互换

现在有一个列表 li,内容为:

  1. li = [33, 2, 55, 1]

现需要把 li列表中的第一个位置元素与第二个位置元素互换,其解决方法就可以引用一个中间变量temp

  1. li = [33, 2, 55, 1]

  2. print("原内容为: ",li)

  3. temp = li[1]

  4. li[1] = li[2]

  5. li[2] = temp

  6. print("互换之后的内容为: ",li)

输出结果:

  1. C:Python35python.exe F:/Python_code/Note/maopao.py

  2. 原内容为:

  3. [33, 2, 55, 1]

  4. 互换之后的内容为:

  5. [33, 55, 2, 1]

  6. Process finished with exit code 0

图解运作原理

列表内容为:

  1. li = [45,32,12,23]

Python算法实战:冒泡

文字描述

  1. 比较相邻的元素,如果第一个比第二个大,就交换他们两个的位置。

  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数。

  3. 针对所有的元素重复以上的步骤,除了最后一个,也就是每次比较之后最大的书不做任何操作。

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码实现

  1. li = [45,32,12,23]

  2. for n in range(1, len(li)):

  3. for i in range(len(li) - n):

  4. if li[i] > li[i + 1]:

  5. temp = li[i]

  6. li[i] = li[i + 1]

  7. li[i + 1] = temp

  8. print(li)

输出结果:

  1. C:Python35python.exe F:/Python_code/Note/maopao.py

  2. [12, 23, 32, 45]

  3. Process finished with exit code 0

题图:pexels,CC0 授权。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: