本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

由我们所知每一个python程序的运行都是很多次的算法变成的,而计算机进行计算一定会花费时间,而我们在学习python基础时已经知道python相对其他语言来说是相对比较慢的。这样的差异我们称为时间复杂度。可能在一般情况下我们看不出时间的差异,那么我们接下来就将对时间进行测试。

解决方案

我们进行测试的题目很简单:如果a+b+c=1000,并且a**2+b**2=c**2,求abc的组合。

我们先用最简单的方法进行计算,就是将a,b,c分别放入(0,1000)内,分别一个一个的尝试,最后确定a,b,c的确定值。但是这里我们为了测试时间,我们要引用第三方库来记录程序的运行时间。

代码示例:import time

start_time = time.time()

for a in range(1001):

for b in range(1001):

for c in range(1001):

if a + b + c == 1000 and a**2 + b**2 == c**2:

print("a,b,c:%d,%d,%d"%(a,b,c))

end_time = time.time()

used_time= end_time - start_time

print(used_time)

这里我们可以推算计算机就进行的运算次数为1000*1000*1000*2(将if语句看作为一步)

图1 运行结果

可以看出,进行这次运算大约使用了146秒,其实便可以看出python运行速度慢的问题了。

然后我们将代码简化为 c = 1000-a-b的形式,这样问题便被简化了,我们可以推算运算次数为1000*1000*3。

代码示例:import time

start_time = time.time()

for a in range(1001):

for b in range(1001):

# for c in range(1001):

c = 1000 - a - b

if a**2 + b**2 == c**2:

print("a,b,c:%d,%d,%d"%(a,b,c))

end_time = time.time()

used_time= end_time - start_time

print(used_time)

图2 运行结果2

可以看到在这个程序下,我们运行时间不足1秒,而我们仅仅只是优化了一步。两者相比,第一个比第二个快了许多。这种差异就叫做时间复杂度的差异。在算法中我们经常需要将一个程序简化,以达到最佳运算的目的。

结语

在算法中,我们经常会想要限制自己程序的运行时间,然后对其进行优化,达到最佳的运行时间。我们便也可以通过这种简单的方式来进行测量。

python官网下载好慢1001python官网下载好慢-Python|时间复杂度测试相关推荐

  1. 在python官网如何下载手机版_Python教学免费下载-Python教学appv1.0 官方版-腾牛安卓网...

    Python教学app,专为Python语言学习打造的在线教育平台,零基础学Python,各种编程知识轻松掌握,快速提升个人编程能力.Python教学还有大量实战知识,边学边练习,更好掌握Python ...

  2. python教程之打包python源码上传的PyPI官网

    为什么打包源码 如果你想让你的实现的python代码,通过pip install 方式供所有人进行下载:那就需要将代码上传到PyPi上,这样才能让所有人使用: 如何打包源码上传: 前提条件: 1.有一 ...

  3. 下载keep运动软件_Keep运动软件官网下载_Keep运动最新官网下载_18183软件下载

    Keep运动官网下载怎么样?不妨来18183下载试试!1.8亿运动爱好者都在Keep体验健身.跑步.骑行.计步功能,ta就是移动健身教练和饮食指导老师.Keep帮助人们随时随地练就完美身材,开启健康生 ...

  4. 官网mysql安装目录_官网下载MySQL 并安装

    官网下载MySQL 并安装 一.下载 二.安装:这里不再叙述安装步骤 三.MySQL环境变量配置不是必须的. MySQL环境变量作用: 找到MySQL安装目录下的bin目录,才能使用MySQL相关命令 ...

  5. 华为方舟编译器开源官网正式上线:源代码已开放下载;中兴通讯与北京交通大学、中国移动北京公司签署 “5G战略合作框架协议”……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  6. 吐槽一下,英伟达Nvidia官网下载驱动及相关资源,下载完全是打不开的文件

    吐槽一下,英伟达Nvidia官网下载驱动及相关资源,下载完全是打不开的文件 无论下载什么 都是三四十K的文件,无法打开 换了N中浏览器和环境都一样 你们也遇到了么?

  7. 如何从官网下载jdk_如何从官网下载itunes

    直接进3gqq,然后去手机腾讯网点击下载,然后输入手机型号就可以直接下载软件了,望采纳 . 下载:初学JAVA,一般我要用的是JDK(JAVASEDEVELOPMENTKIT)JDK也有很多公司在研发 ...

  8. Oracle官网所有JDK及JRE历史版本下载地址

    Oracle官网所有JDK及JRE历史版本下载地址 访问 https://www.oracle.com/java/technologies/javase/javase8-archive-downloa ...

  9. 【软件包合集】keil C51 C251 MDK V5 V4 v3 v2 所有版本软件包下载(包括最新)【官网地址】

    keil  所有版本软件包官方下载地址 目录 keil  所有版本软件包官方下载地址 MDK536版本 基本没有变动(更新日期2021年06月30日) MDK5版本更新说明 MDK4版本更新说明 C2 ...

最新文章

  1. 编译原理四种文法的理解补充
  2. Intellij IDEA设置运行时Java参数
  3. java移位操作符注意的问题
  4. 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
  5. [转载]MVP(SC),MVP(PV),PM,MVVM 和 MVC 表现模式架构对比
  6. android弹窗不能手动关闭_vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
  7. SQL分页查询方案的性能对比
  8. 程序员求助:被领导强行要求写Bug该怎么办?网友的回答让我笑翻
  9. [转载] Python轻量Web框架Flask使用
  10. 我花了20年研究华为:绝大多数失败的企业,都毁在了老板的自私上
  11. Codeforces1221 C. Perfect Team
  12. python 修改文件只读_Python脚本去除文件的只读性操作
  13. Pr 入门教程 如何使用超级键效果?
  14. emui系统就是鸿蒙吗,华为EMUI是不是鸿蒙系统
  15. iOS开发系列--数据存取
  16. C 语言 —— % 运算符
  17. 测试信号处理-模拟滤波器概述
  18. Android Q(10.0)黑暗主题
  19. win8无法打开Oracle 12c的企业管理控制台解决方案
  20. 笔记:Head First设计原则和设计模式

热门文章

  1. P3916 图的遍历
  2. [CF314C](Sereja and Subsequences)
  3. python中requests.session的妙用
  4. linux内核编译及系统裁减
  5. python的socket编程
  6. 浅谈Logistic回归及过拟合
  7. C 这些东西的内存管理
  8. 计算机文件系统小结,文件系统总结.doc
  9. iview构建基本html页面,使用vue-cli创造基于vue.js的iview工程
  10. python使用符号#表示单行注释-【经济金融及Python应用讲义】Python编程规范之注释...