社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python算法实战:冒泡

编程派 • 8 年前 • 861 次点击  

作者:安生

来源: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 教程和资源。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/weixin/odIsVUVwV7
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1895
 
861 次点击