第五课 算法的时间复杂度

  判断一个算法的效率时,操作数量中的常数项和其他次要项常常可以忽略,只需要关注最高阶项就能得出结论。

如何用符号定性的判断算法的效率呢?

  算法的复杂度:

时间复杂度:

  算法运行后对时间需求量的定性描述。

空间复杂度:

  算法运行后对空间复杂度的定性描述。

数据结构课程重点关注的是算法的效率问题,因此,整个课程会集中的讨论算法的时间复杂度,但其使用方法完全可以用于空间复杂度的判断。

大O表示法:

常见的时间复杂度:

线性时间复杂度:

对数阶时间复杂度:

平方阶时间复杂度:

下面代码片段的时间复杂度是什么:

练习1:

练习2:

func函数的时间复杂度是O(n*n)。

练习3:

test函数的时间复杂度为O(n*n*n)。

总结:

  时间复杂度是算法运行时对于时间的需求量

  大O表示法用于描述算法的时间复杂度

  大O表示法只关注操作数量的最高次项

  常见的时间复杂度为:线性阶、平方阶和对数阶。

原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9495958.html

时间: 2024-10-20 17:32:39

第五课 算法的时间复杂度的相关文章

第5课 算法的时间复杂度

1. 定性判断算法的效率 (1)时间复杂度:算法运行后对时间需求量的定性描述(数据结构课程集中讨论的内容) (2)空间复杂度:算法运行后对空间需求量的定性描述(判断方法类似于时间复杂度) 2. 大O表示法 (1)算法效率严重依赖于操作(Operation)数量 (2)操作数量的估算可以作为时间复杂度的估算 (3)在判断时首先关注操作数量的最高次项 O(5) =O(1) O(2n+1)=O(2n)=O(n) O(n2+n+1) = O(n2) O(3n3+1)=O(3n3)=O(n3) 3. 常见

目前流行的几种排课算法的介绍

通用高校排课算法研究----2 .目前流行的几种排课算法的介绍 2   目前流行的几种排课算法的介绍 2.1. 自动排课算法 1 .问题的描述 我们讨论的自动排课问题的简化描述如下: 设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数(每次为连续的2 学时) 为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一- 星期五;每个教学日最多安排4次课程教学,即1 - 2 节.3 - 4 节.5 - 6 节和7 - 8 节(以下分别称第1

通用高校排课算法研究----前言

1   绪 论 1.1课题背景与研究意义 1.2课题的应用领域 1.3 课题的现状 1.4解决NP问题的几种算法及其比较 2   目前流行的几种排课算法的介绍 2.1. 自动排课算法 2.2 基于优先级的排课算法 3   基于时间片优先级排课算法描述与分析 3.1排课中的基本原则 3.2排课的基本要求 3.3基于时间片优先级排课算法描述 3.4算法分析 参 考 资 料 1   绪 论 1课题背景与研究意义 排课问题早在70年代就证明是一个NP完全问题,即算法的计算时间是呈指数增长的,这一论断确立

眼下流行的几种排课算法的介绍

通用高校排课算法研究----2 .眼下流行的几种排课算法的介绍 2眼下流行的几种排课算法的介绍 2.1. 自己主动排课算法 1 .问题的描写叙述 我们讨论的自己主动排课问题的简化描写叙述例如以下: 设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数(每次为连续的2 学时) 为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一- 星期五;每一个教学日最多安排4 次课程教学,即1 - 2 节.3 - 4 节.5 - 6 节和7 - 8

通用高校排课算法研究----3.基于时间片优先级排课算法

通用高校排课算法研究----3.基于时间片优先级排课算法 3   基于时间片优先级排课算法描述与分析 排课问题实质上是时间.教师.班级.教室.课程这五维关系的冲突问题,要合理的解决这个问题首先要了解排课中的一些基本原则以及排课的一些基本要求. 3.1排课中的基本原则 在课程的编排中应遵循一定的规则, 只有按照基本规则来进行课程的编排才能够减少冲突的发生, 这些基本规则主要有以下几条: 1) 同一班级的学生在同一时间(某些特定的选修课时间除外) 不能安排两门课程 2) 同一教师在同一时间不能安排两

算法与时间复杂度

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 算法特征: 一个算法应该具有以下五个重要的特征: (1)有穷性(Finiteness) 算法的有穷性是指算法必须能在执行有限个

第五课 进程管理

unix_c_05.txt================第五课 进程管理================一.基本概念------------1. 进程与程序~~~~~~~~~~~~~1) 进程就是运行中的程序.一个运行着的程序,可能有多个进程.进程在操作系统中执行特定的任务.2) 程序是存储在磁盘上,包含可执行机器指令和数据的静态实体.进程或者任务是处于活动状态的计算机程序.2. 进程的分类~~~~~~~~~~~~~1) 进程一般分为交互进程.批处理进程和守护进程三类.2) 守护进程总是活跃的

算法的时间复杂度和空间复杂度

<算法的时间复杂度和空间复杂度合称为算法的复杂度> --->算法的时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模

数据结构和算法之时间复杂度和空间复杂度

前言 上一篇<数据结构和算法>中我介绍了数据结构的基本概念,也介绍了数据结构一般可以分为逻辑结构和物理结构.逻辑结构分为集合结构.线性结构.树形结构和图形结构.物理结构分为顺序存储结构和链式存储结构.并且也介绍了这些结构的特点.然后,又介绍了算法的概念和算法的5个基本特性,分别是输入.输出.有穷性.确定性和可行性.最后说阐述了一个好的算法需要遵守正确性.可读性.健壮性.时间效率高和存储量低.其实,实现效率和存储量就是时间复杂度和空间复杂度.本篇我们就围绕这两个"复杂度"展开