教你看懂算法执行时间、算法时间复杂度、算法空间复杂度
一、算法执行时间
执行时间:所有语句执行时间的总和,与软硬件环境有关
语句执行时间:该条语句的重复执行次数 * 执行一次所需的时间
语句频度: 一条语句的重复执行次数
ps:执行时间并非精确,而是通过估计语句的执行次数得到的算法执行时间
将频度相加,可以得到最终的执行时间 T(n) = 2n³ + 2n² + 2n + 1
二、算法时间复杂度
上面我们知道了什么是算法的执行时间 ,由T(n)表示。现在聊聊算法的时间复杂度~
当n趋于无穷时, T(n)的数量级称为算法渐进时间复杂度,采用大O表示数量级,记作:T(n) = O(f(n))
fn(n) 一般是算法的最大语句频度(最高数量级),通常都忽略掉常系数,保留最高数量级。【2n³ + 2n² + 2n + 1 , 此处的n³就是最高数量级,系数和其他的数量级都可以忽略了】
因为:随着n的不断增大(抽象:直接理解n是很大的不可预知的数),算法执行时间的增长率和f(n)的增长率相同,简称时间复杂度(全名渐进时间复杂度)。
所以上述例子中的 时间复杂度 T(n) = O(n³)
此处贴一张某视频教程里的图,越平缓的时间复杂度算法越好哦~
三、算法空间复杂度
可以简单理解为这段算法需要占用多少存储空间(一个程序所需的空间包括算法本身所占用存储空间,输入数据占用的存储空间,算法在运行过程中的工作单元和实现算法所需要的辅助空间。但是计算算法空间复杂度时只分析算法执行时所需的辅助空间),与时间复杂度类似:S(n) = O(f(n))
我是一只酸菜鱼,又酸又菜又多余~~~