文 彦 考 研

让丨梦想丨有迹可循

这是20届川大计算机 第 3 篇文章

零师姐 2017届以初试353分,复试第2的成绩考入四川大学计算机科学与技术专业。现于文彦考研担任专业课导师,辅导川大874计算机综合考研专业课。多次参与与IT公司的合作项目中,熟悉计算机专业的考研动态与就业形势。

时间复杂度专场

学习数据结构,那么时间复杂度就是一个逃不过的话题。今天我们就来仔细看看它是什么?怎么计算时间复杂度?它怎么考?这三个问题。

我们把 算法需要执行的运算次数 用 输入大小n 的函数 表示,即 T(n) 。

此时为了 估算算法需要的运行时间 和 简化算法分析,我们引入时间复杂度的概念。

定义:存在常数 c 和函数 f(N),使得当 N >= c 时 T(N) <= f(N),表示为 T(n) = O(f(n)) 。

如图:

算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 输入大小n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述。

显然如果 T(n) = n^2,那么 T(n) = O(n^2),T(n) = O(n^3),T(n) = O(n^4) 都是成立的,但是因为第一个 f(n) 的增长速度与 T(n) 是最接近的,所以第一个是最好的选择,所以我们说这个算法的复杂度是 O(n^2) 。

那么当我们拿到算法的执行次数函数 T(n) 之后怎么得到算法的时间复杂度呢?

1、我们知道常数项对函数的增长速度影响并不大,所以当 T(n) = c,c 为一个常数的时候,我们说这个算法的时间复杂度为 O(1);如果 T(n) 不等于一个常数项时,直接将常数项省略。

2、我们知道高次项对于函数的增长速度的影响是最大的。n^3 的增长速度是远超 n^2 的,同时 n^2 的增长速度是远超 n 的。 同时因为要求的精度不高,所以我们直接忽略低此项。

3、因为函数的阶数对函数的增长速度的影响是最显著的,所以我们忽略与最高阶相乘的常数。

综合起来:如果一个算法的执行次数是 T(n),那么只保留最高次项,同时忽略最高项的系数后得到函数 f(n),此时算法的时间复杂度就是 O(f(n))。为了方便描述,下文称此为 大O推导法。

由此可见,由执行次数 T(n) 得到时间复杂度并不困难,很多时候困难的是从算法通过分析和数学运算得到 T(n)。对此,提供下列四个便利的法则,这些法则都是可以简单推导出来的,总结出来以便提高效率。

1、对于一个循环,假设循环体的时间复杂度为 O(n),循环次数为 m,则这个

循环的时间复杂度为 O(n×m)。

2、对于多个循环,假设循环体的时间复杂度为 O(n),各个循环的循环次数分别是a, b, c...,则这个循环的时间复杂度为 O(n×a×b×c...)。分析的时候应该由里向外分析这些循环。

3、对于顺序执行的语句或者算法,总的时间复杂度等于其中最大的时间复杂度。

4、对于条件判断语句,总的时间复杂度等于其中 时间复杂度最大的路径 的时间复杂度。

时间复杂度分析的基本策略是:从内向外分析,从最深层开始分析。如果遇到函数调用,要深入函数进行分析。

时间复杂度其实并不难,通过这次我为你们准备的这几道逐步“升级”的题目,再消化一下上述的知识点,相信你们应该已经有把握了。至于一些整理得更全面的干货我也会全部在我的课上分享给你们的,你们放心吧。

就到暑假了,黄金复习时间同学们一定要好好把握,有疑问的地方不要自己愣着想,可以直接在群里问我,毕竟学习的时间那么宝贵,将疑问都抛给零师姐吧


扫码入群~

获取更多干货~

加小彦微信

一对一咨询~

c++循环执行一个函数_20川大计算机 | 时间复杂度,你避不开的一个考点相关推荐

  1. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s

    题目描述: 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s ...

  2. 四川大学计算机学硕分数线,川大计算机考研分数线

    川大计算机考研分数线?2016高考志愿填写,高考考生家长有开端着手预备吗 厚学网收拾了对于普通高校招生填写志愿的有关诀窍,供考生和家长参阅. 绝密:高考填报志愿有技巧! 志愿填报需要注意的细节问题:语 ...

  3. 【计算机推免】川大计算机夏令营_华南理工软件预推免_华科计算机预推免(2020.10)

    本文7000+字,有帮助的留个赞或评论吧 目录 1 本文目的 2 个人基本情况 3 川大计算机 3.1 申请材料 3.2 7月6号-7月8号宣讲 3.3 7月8号报道考核 3.4 个人感受 4 华南理 ...

  4. 川大计算机学院的牛人走的都是同一条道路

    今天听到liulike师兄也去了MSRA,当然,以他的实力,的确应该去MSRA才对.liulike师兄大我一届,是川大ACM队的牛人,今年代表川大ACM队在全国取得了历史最好成绩. 又是一个去MSRA ...

  5. 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出

    写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出 思路:所谓复制到另一个字符串中,就是使a,b数组中元素一一对应,因为字符串结束的标志是\0,所以最后要赋值\0. #include&l ...

  6. 西部一流,连年扩招,这样的川大计算机你心动了吗?

    1.院校介绍[1] 四川大学于1998年设立计算机学院.2005年,学校将计算机学院和软件学院行政班子合并,实行教学和学生管理独立运行的模式.在2017年的第四轮学科评估当中,四川大学软件工程的学科评 ...

  7. 川大优秀毕业生在GitHub上建了一个项目《深度学习500问》,还未完结就获赞无数

    近年来,深度学习在语音.图像.自然语言处理等领域都取得了非常不错的成果,自然而然地成为技术人员争相学习的热点. 为了帮助正在学习深度学习的伙伴们,川大的一名优秀毕业生,在GitHub上创建了一个项目: ...

  8. 川大计算机文化基础在线作业,川大1309《计算机文化基础0008》在线作业2答案.docx...

    川大 13 秋<计算机文化基础 0008>在线作业 2 答案 试卷得分: 100 测试时间: 2014年 1月 7日 (答案在末尾) 一.单选题(共 50道试题,共100分o ) V 1. ...

  9. 16秋川大计算机基础作业,川大 16秋 《计算机应用基础》第一次作业答案

    <川大 16秋 <计算机应用基础>第一次作业答案>由会员分享,可在线阅读,更多相关<川大 16秋 <计算机应用基础>第一次作业答案(7页珍藏版)>请在人 ...

最新文章

  1. 漫画:产品经理的这些“谎言”,你一定中招过!!!
  2. 概念化学习Django
  3. 基于SSM实现商户管理系统
  4. Nosql数据一致性技术概要
  5. python 是什么类型的语言-为什么说 Python 是强类型语言?
  6. Python编程基础:第二十九节 异常Exception
  7. java 深入了解DTO及如何使用DTO
  8. 【Android】7.5 RelativeLayout(相对布局)
  9. VMworld 2016 US带来了哪些惊喜?
  10. [译] libvirt 虚机的生命周期 (Libvirt Virtual Machine Lifecycle)
  11. 【黑客】利用VBS脚本让QQ永远在线,等级速升
  12. CGCS2000/WGS84/ITRF关系
  13. 用友u8服务器修改ipv4,如何修改用友服务器ip地址
  14. 勒索软件频繁升级,了解常见勒索软件很有必要
  15. 女生节礼物清单分享,38节适合送女生的礼物合集
  16. tomcat上面有红叉解决办法
  17. STC89C52单片机AD/DA介绍与代码演示
  18. 超大型电商系统架构解密-韩军
  19. signature=1be7575a614ba3597c2c53247a739d1c,paraphrase答案(校对版lesson1-lesson6)
  20. 乐优商城遇到的坑(一)

热门文章

  1. PackStack安装OpenStack Pike
  2. vue axios springboot 跨域
  3. 深入理解golang的defer
  4. Ubuntu增加一个用户并给普通用户赋予root权限的方法
  5. java小编程--二分查找和插入排序
  6. 【Spring】总结Spring整合Mybatis的底层原理实现步骤
  7. 【SpringBoot + Docker】编写Dockerfile安装jdk11.0.3,并部署SpringBoot项目
  8. 【MySQL distinct的使用】如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中
  9. 网易2019实习生招聘题目 被3整除
  10. java 8中构建无限的stream