今天自习了一个算法,冒泡排序法,其实还挺简单的,就讲下原理及代码运行的方式。
首先我们要了解冒泡排序法是什么,这个是最基础的算法之一,在许多编程语言中都适用。它会把列表中的数字依次两两对比,将大的数字排到最后。而每次排列完数字后,最后一位的数字不会再重复计算,将接着排列剩下的数字,直至列表中的数字从小到大排列完成为止。
下面是程序代码
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数字华容道(可选择关卡)
谢谢阅读!
前言 该脚本的代码大部分是参考自阿里云的官方帮助文档。 1, 脚本语言使用的是py...
SpringMVC自定义属性编辑器详解及实例 自定义springMVC的属性编辑器主要有两种方...
摘要: 本文演示如何向有效用户提供jwt,以及如何在webapi中使用该token通过JwtB...
cocoapods-hmap-prebuilt 是什么? cocoapods-hmap-prebuilt 是美团平台迭代组自...
本文实例为大家分享了jQuery实现穿梭框效果的具体代码,供大家参考,具体内容如...
前言 App自动化测试中有两个很重要的操作,屏幕滑动与绘制手势密码。目前很多App...
用ASP开发的时候遇到一个解码问题。虽然在ASP中使用Request获取编码过URL字符串...
本文实例讲述了JSP实现的简单分页示例。分享给大家供大家参考,具体如下: %@ pa...
安卓开发1 微信页面框架设计 一、本项目完成的功能 1.做出类微信app的首页2.顶部...
本文实例为大家分享了JS代码实现页面切换效果的具体代码,供大家参考,具体内容...