其他

Python算法实战:冒泡

2017-06-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


最近热文:

邀你参加11期 程序员专场相亲活动

加入群请加微信2518988391(备注岗位)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存