算法分析神器—时间复杂度

算法分析神器—时间复杂度

时间复杂度是学习算法的基石,今天我们来聊聊为什么要引入时间复杂度,什么是时间复杂度以及如何去算一个算法的时间复杂度

						刻画算法的运行时间

某日,克叫来了慧子打算给他补习补习一下基础知识,只见克写了一段非常简单的代码
算法分析神器—时间复杂度_第1张图片
算法分析神器—时间复杂度_第2张图片
算法分析神器—时间复杂度_第3张图片算法分析神器—时间复杂度_第4张图片
算法分析神器—时间复杂度_第5张图片

为了方便讨论,这里我们把每一条语句的执行时间都看做是一样的,记为一个时间单元

算法分析神器—时间复杂度_第6张图片

① 蓝色框的两条语句,花费两个时间单元
②黑色框的一条语句,花费n+1个时间单元
③红色框的两条语句,花费2*n个时间单元

算法分析神器—时间复杂度_第7张图片

这不是数学吗,慧子心里想到

在这里插入图片描述

其中的n被我们称为问题的规模,其实就是你处理问题的大小
克顺手画了这个函数的图

算法分析神器—时间复杂度_第8张图片

本文主要讨论问题规模和运行时间的关系,假定不同输入和运行时间基本无关

算法分析神器—时间复杂度_第9张图片

							时间复杂度

算法分析神器—时间复杂度_第10张图片

比如说:T(n)=3n+3,当n非常大的时候常数3和n的系数3对函数结果的影响就很小了

算法分析神器—时间复杂度_第11张图片在这里插入图片描述

比如: T(n)=n+1 忽略常数项 T(n)~n T(n)=n+n^2 忽略低阶项 T(n)~n^2
T(n)=3n 忽略最高阶的系数 T(n)~n

算法分析神器—时间复杂度_第12张图片

还好不用掌握那头疼的数学,慧子心中想到

在这里插入图片描述

慧子把话题又拉了回来

算法分析神器—时间复杂度_第13张图片

更准确地说O代表了运行时间函数的一个渐进上界,即T(n)在数量级上小于等于f(n)

算法分析神器—时间复杂度_第14张图片

时间复杂度的计算

算法分析神器—时间复杂度_第15张图片
算法分析神器—时间复杂度_第16张图片
算法分析神器—时间复杂度_第17张图片算法分析神器—时间复杂度_第18张图片
算法分析神器—时间复杂度_第19张图片
算法分析神器—时间复杂度_第20张图片
算法分析神器—时间复杂度_第21张图片
算法分析神器—时间复杂度_第22张图片

你可能感兴趣的:(算法)