时间复杂度:

算法的运行时间。

什么是大O:

大O用来表示上界的。

数据规模:

在决定使用哪些算法的时候,不是时间复杂越低的越好(因为简化后的时间复杂度忽略了常数项等等),要考虑数据规模,如果数据规模很小甚至可以用O(n^2)的算法比O(n)的更合适(在有常数项的时候)。

就像上图中 O(5n^2) 和 O(100n) 在n为20之前, 很明显 ,

O(5n^2)是更优的,所花费的时间也是最少的。

那为什么在计算时间复杂度的时候要忽略常数项系数呢,也就说O(100n) 就是O(n)的时间复杂度,
O(5n^2) 就是
O(n^2)
的时间复杂度,而且要默认O(n) 优于O(n^2) 呢 ?
这里就又涉及到大O的定义,因为大O就是数据量级突破一个点且数据量级非常大的情况下所表现出的时间复杂度,这个数据量也就是常数项系数已经不起决定性作用的数据量。

所以我们说的时间复杂度都是省略常数项系数的,是因为一般情况下都是默认数据规模足够的大,基于这样的事实,给出的算法时间复杂的的一个排行如下所示:

复杂表达式的化简

1、去掉运行时间中的加法常数项 (因为常数项并不会因为n的增大而增加计算机的操作次数)。
2、去掉常数系数(上文中已经详细讲过为什么可以去掉常数项的原因)。
3、只保留最高项,去掉数量级小一级的n (因为n^2 的数据规模远大于n),最终简化为:
例如:

O(2*n^2 + 10*n + 1000)

去掉运行时间中的加法常数项:

O(2*n^2 + 10*n)

去掉常数系数:

O(n^2 + n)

去掉数量级小一级的n:

O(n^2)

如果这一步理解有困难,那也可以做提取n的操作,变成O(n(n+1)) ,省略加法常数项后也就别变成了:

O(n^2)

O(logn)中的log是以什么为底?

平时说这个算法的时间复杂度是logn的,那么一定是log 以2为底n的对数么?

其实不然,也可以是以10为底n的对数,也可以是以20为底n的对数,但我们统一说 logn,也就是忽略底数的描述。

为什么可以这么做呢?如下图所示:

假如有两个算法的时间复杂度,分别是log以2为底n的对数和log以10为底n的对数,那么这里如果还记得高中数学的话,应该不难理解以2为底n的对数 = 以2为底10的对数 * 以10为底n的对数

而以2为底10的对数是一个常数,在上文已经讲述了我们计算时间复杂度是忽略常数项系数的。

抽象一下就是在时间复杂度的计算过程中,log以i为底n的对数等于log 以j为底n的对数,所以忽略了i,直接说是logn。

这样就应该不难理解为什么忽略底数了。

算法超时:



来源链接: link

Python算法性能分析-时间复杂度相关推荐

  1. 冒泡和快速排序的时间复杂度_八大排序算法性能分析及总结

    一.排序算法说明 排序的定义:对一个无序的序列进行排序的过程. 输入:n个数:a1,a2,a3,-,an. 输出:n个数的排列:a1,a2,a3,-,an,使得a1<=a2<=a3< ...

  2. 【算法设计与分析】排序算法性能分析

    github:项目地址 一.实验目的 掌握选择排序.冒泡排序.合并排序.快速排序.插入排序算法原理 掌握不同排序算法时间效率的经验分析方法,验证理论分析与经验分析的一致性. 二.实验概述 排序问题要求 ...

  3. 算法学习四:算法性能分析理论基础——函数增长与渐进分析

    算法学习四:算法性能分析理论基础--函数增长与渐进分析 在算法性能分析过程中,特别是在算法运行效率分析中,我们经常使用渐渐分析法,它使我们在分析算法性能时不必纠结于不同硬件平台的差异性,着重考虑算法的 ...

  4. 关于蛙跳算法的计算机文献,文化蛙跳算法性能分析研究.PDF

    文化蛙跳算法性能分析研究.PDF 第24卷摇 第11期 计 算机 技 术 与发 展 Vol.24摇 No.11 2014年11月 摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 COMPUTERTECHNOL ...

  5. python脚本性能分析

    在进行python开发时需要对python脚本的性能分析,以便对python脚本进行优化,下面使用cProfile和 pstats对python脚本性能分析. cProfile思路 1.使用cProf ...

  6. 深圳大学算法实验一——排序算法性能分析

    深圳大学算法实验一 一.实验目的与要求 1. 掌握九种排序算法原理 2. 掌握不同排序算法时间效率的经验分析方法,验证理论分析与经验分析的一致性. 3. 对多种排序算法提出改进方案 4. 综合比较各种 ...

  7. 大数据与算法系列之算法性能分析

    我们在敲出自己心爱的程序的时候,我们是否想过,自己程序的性能咋样! 今天,我们说一说对程序或者算法的性能分析! 算法复杂度 算法复杂度是算法性能最基本的评价标准,复杂度是一个算法的时间运行函数,常用大 ...

  8. python代码性能分析_Python 性能分析入门指南

    虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题. 分析程序的性能可以归结为回答四个基本问题: ...

  9. 教你3个python「性能分析」工具,再也不用自己计算函数耗时了

    文章目录 引言 1. cProfile:最便捷的性能分析 保存性能数据 查看性能数据 查看耗时最多的子函数 查看特定名称函数的耗时 2. timeit:计算小代码片段的耗时 3. IDE中的性能分析 ...

最新文章

  1. POCO:InvalidOperationError:Mapping and metadata information could not be found for Entity Type
  2. mybatis入门-第一个程序
  3. WP7 APP 猜数字 V2.0 更新
  4. VTK:Utilities之PiecewiseFunction
  5. gcc编译器命令使用详解
  6. SVN中“txn-current-lock:拒绝访问”错误
  7. ANSYS——自定义的梁截面中心(法线节点)的偏置,详细全面
  8. OpenCV:透视变换
  9. asterisk php agi,asterisk AMI入门
  10. Linux下Shell脚本运行程序不输出日志到终端
  11. 老弟教你用CSS和JS实现曾经风靡一时的微信打飞机游戏
  12. 视频剪辑,教你如何给视频水平翻转
  13. android 平板端应用商店,安卓平板电脑软件商店--乐商店是目前最安全的Android应用商店...
  14. 手把手教你建立数据指标体系
  15. ipa安装失败,以及安装办法
  16. java中23%5_23.5 jumpserver介绍
  17. Oracle官网 JDK下载 注册登录公共账号和密码
  18. 印刷行业中,MES管理系统的功能应重点优化这三个方面
  19. Excel如何通过年份上的时间差操作求得员工工龄
  20. x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用

热门文章

  1. 《南溪的目标检测学习笔记》——激活函数的学习笔记
  2. 哀悼日一位老师在教室里的讲话
  3. 杭州应届生php平均薪资,杭州应届生起薪平均值4275元 排非一线城市之首
  4. IceRiver引领数字货币挖矿新时代:KAS专用矿机冰河KS1震撼发布!
  5. C++解题报告——Kas(动态规划)
  6. VB为报表盖电子图章
  7. 计算机电路图解,图解 | 你管这破玩意叫计算机?
  8. JavaScript - WebAPI - BOM浏览器对象模型
  9. html代码文本框首行缩进,如何将HTML页面中的文本设置首行缩进,文本首行缩进...
  10. 深耕图形服务,HMS Core 5.0携手开发者共创视觉盛宴