专栏名称: 编程派
Python程序员都在看的公众号,跟着编程派一起学习Python,看最新国外教程和资源!
目录
相关文章推荐
Python爱好者社区  ·  自己工资 14K,找到月薪 ... ·  5 天前  
Python爱好者社区  ·  YOLOv1-v11合集(附代码) ·  6 天前  
Python开发者  ·  裁员了,很严重,今年千万别离职 ·  1 周前  
Python爱好者社区  ·  又一院士被“除名”!院士终生制,没了? ·  1 周前  
Python爱好者社区  ·  爆了!目标检测杀疯了 ·  1 周前  
51好读  ›  专栏  ›  编程派

Python算法实战:冒泡

编程派  · 公众号  · Python  · 2017-05-03 11:32

正文

作者:安生

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

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


题外话

  • 变量位置的互换

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

  1. a1=123

  2. a2=456

如何调换这两个变量的位置,即结果就是让 a1=456, a2=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:\Python35\python.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("原内容为:\n",li)

  3. temp = li[1]

  4. li[1] = li[2]

  5. li[2] = temp

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

输出结果:

  1. C:\Python35\python.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]

文字描述

  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:\Python35\python.exe F:/Python_code/Note/maopao.py

  2. [12, 23, 32, 45]

  3. Process finished with exit code 0


题图:pexels,CC0 授权。

点击阅读原文,查看更多 Python 教程和资源。