如何评价算法的优劣

作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16393475.html


评价算法的优劣

评价算法的优劣,看算法的时间复杂度,空间复杂度,两者越低越好 时间复杂度:执行当前算法所消耗的时间 列如: for(i=1; i<=n; ++i) { j = i; j++; } 通过「 大O符号表示法 」,这段代码的时间复杂度为:O(n)(简化后的时间复杂度) 在 大O符号表示法中,时间复杂度的公式是: T(n) = O( f(n) ),其中f(n) 表示每行代码执行次数之和,而 O 表示正比例关系,这个公式的全称是:算法的渐进时间复杂度。

假设每行代码的执行时间都是一样的,我们用 1颗粒时间 来表示,那么这个例子的 第一行耗时是1个颗粒时间, 第三行的执行时间是 n个颗粒时间, 第四行的执行时间也是 n个颗粒时间(第二行和第五行是符号,暂时忽略), 那么总时间就是 1颗粒时间 + n颗粒时间 + n颗粒时间 ,即 (1+2n)个颗粒时间, 即: T(n) = (1+2n)*颗粒时间, 从这个结果可以看出,这个算法的耗时是随着n的变化而变化,因此,我们可以简化的将这个算法的时间复杂度表示为:T(n) = O(n) 如果n无限大的时候,T(n) = time(1+2n)中的常量1就没有意义了,倍数2也意义不大。因此直接简化为T(n) = O(n) 就可以了。

空间复杂度:一个算法的空间复杂度 S(n) 定义为该算法所耗费的存储空间 列如: int[] m = new int[n] for(i=1; i<=n; ++i) { j = i; j++; } 这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间,因此,这段代码的空间复杂度主要看第一行即可, 即 S(n) = O(n)

 
posted @   kuaiquxie  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示