Python算法篇:冒泡排序
今天自习了一个算法,冒泡排序法,其实还挺简单的,就讲下原理及代码运行的方式。
首先我们要了解冒泡排序法是什么,这个是最基础的算法之一,在许多编程语言中都适用。它会把列表中的数字依次两两对比,将大的数字排到最后。而每次排列完数字后,最后一位的数字不会再重复计算,将接着排列剩下的数字,直至列表中的数字从小到大排列完成为止。
下面是程序代码
numbers = [12,60,35,77,24,66]
length = len(numbers)
for j in range(length - 1,0,-1):
for i in range(j):
if numbers[i] > numbers[i + 1]:
temporary = numbers[i]
numbers[i] = numbers[i + 1]
numbers[i + 1] = temporary
print(numbers)
相对于我之前发的那两篇,这次的代码是少了很多,不过这个只属于正常程序的一个模块,用于计算的模块,少些也正常。
首先我们创建了一个名为numbers的列表,里头存放了6个数。这时各位就不用了看成品代码了,一步一步来。
我们了解了他的原理,可很多人不知道代码如何下手。首先我们创建另一个变量,存放numbers列表中的项数。接着可以开始下一步了。
for i in range(0,length-1):
if numbers[i] > numbers[i + 1]:
numbers[i] = numbers[i + 1]
numbers[i + 1] = numbers[i]
这时一个错误的交换数字位置的程序,不知道大家看出问题没有?没错,当numbers【i + 1】要赋值时,赋的是刷新过的numbers【i】的值。这个问题该怎么解决呢?
for i in range(0,length-1):
if numbers[i] > numbers[i +1]:
temporary = numbers[i]
numbers[i] = numbers[i + 1]
numbers[i + 1] = temporary
很简单,只要加入一个临时变量,存放未赋值的numbers【i】的值,在给numbers【i + 1】赋值时再赋值给它,就轻松解决了。
以上运行结果:
[12,35,60,24,66,77]
可以看到,这一个轮回已经运行成功了。那如何让它运行完整呢?下面接着讲。
我们可以再建一个名为j的循环
for j in range(length-1,0,-1):
for i in range(j):
............
这一步很多人不理解,因为用了循环嵌套,及range函数具体大家看下网上range函数的用法基本上就了解逻辑意思了。实在不行可以去下面这个网址,这是我认为比较好的一个Python主播的视频,大家可以看看他的视频讲解,肯定会比我用文章讲解详细。
https://www.bilibili.com/video/av328230795
不是恰饭!
往期文章:
抽奖程序制作(初始版)
制作Python数字华容道(可选择关卡)
谢谢阅读!
转载:https://blog.csdn.net/weixin_56320616/article/details/115533787