专栏名称: AI报道
大数据时代,做数据的玩家!
目录
相关文章推荐
数据派THU  ·  数据织梦 青春相伴 | ... ·  昨天  
数据派THU  ·  【NeurIPS2024】通过双曲嵌入学习结 ... ·  昨天  
数据派THU  ·  【NeurIPS2024】在复杂视觉推理场景 ... ·  5 天前  
大数据文摘  ·  锤爆Sora,尺度最大,谷歌发布最强视频模型 ... ·  4 天前  
51好读  ›  专栏  ›  AI报道

Python算法实战:冒泡

AI报道  · 公众号  · 大数据  · 2017-05-04 17:02

正文

来源:https://blog.ansheng.me/article/python-full-stack-way-digital-datda-type/


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


题外话

  • 变量位置的互换

假设现在有两个变量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



更多Python实战文章,请点击以下链接

1-Python算法实战:队列

2-Python算法实战:栈


限时干货下载:添加微信公众号“数据玩家「fbigdata

回复【2】免费获取「完整数据分析资料,包括SPSS\SAS\SQL\EXCEL\Project!