当前位置:主页 > 查看内容

Python算法篇:冒泡排序

发布时间:2021-06-01 00:00| 位朋友查看

简介:Python算法篇冒泡排序 今天自习了一个算法冒泡排序法其实还挺简单的就讲下原理及代码运行的方式。 首先我们要了解冒泡排序法是什么这个是最基础的算法之一在许多编程语言中都适用。它会把列表中的数字依次两两对比将大的数字排到最后。而每次排列完数字后最……

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
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐