飞道的博客

Python算法篇:冒泡排序

263人阅读  评论(0)

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场