求教:计算代码复杂度的算法是什么?

2014-05-29 15:23:27 +08:00
 karlxu
8038 次点击
所在节点    程序员
30 条回复
yangff
2014-05-29 16:38:05 +08:00
不存在。
misaka
2014-05-29 16:53:20 +08:00
目测算法。。。
zhoulujue
2014-05-29 17:24:23 +08:00
静态分析工具,多的是。
binux
2014-05-29 17:33:04 +08:00
imxz
2014-05-29 17:40:06 +08:00
是想问 大O 吗 ?
Mutoo
2014-05-29 17:48:37 +08:00
大O表示法,在 Mark Allen Weiss 的《数据结构与算法分析》里面有专门一章节介绍,而且有好几章节的案例分析。
karlxu
2014-05-29 19:41:23 +08:00
@imxz 我想问的是圈复杂度计算,网上都是说数有多少if,while,for。。。。但感觉不是很严谨
karlxu
2014-05-29 19:41:34 +08:00
@Mutoo 我想问的是圈复杂度计算,网上都是说数有多少if,while,for。。。。但感觉不是很严谨
karlxu
2014-05-29 19:41:43 +08:00
@binux 我想问的是圈复杂度计算,网上都是说数有多少if,while,for。。。。但感觉不是很严谨
jiang42
2014-05-29 20:13:09 +08:00
@karlxu 难道你想分析到机器码级别的?
算法分析个大概就好
然后放到实际环境中跑跑看看
creamiced
2014-05-29 20:16:07 +08:00
@karlxu 圈复杂度当然是数这些啊,当然还要考虑嵌套。
还以为你说时间复杂度
akfish
2014-05-29 20:24:08 +08:00
akfish
2014-05-29 20:25:25 +08:00
Mathematically, the cyclomatic complexity of a structured program[a] is defined with reference to the control flow graph of the program, a directed graph containing the basic blocks of the program, with an edge between two basic blocks if control may pass from the first to the second. The complexity M is then defined as[2]
M = E − N + 2P,
where
E = the number of edges of the graph.
N = the number of nodes of the graph.
P = the number of connected components (exit nodes).

够严谨了吧。
keniusahdu
2014-05-29 20:27:45 +08:00
Sonar 有计算复杂度的。但是没有什么算法,都是针对循环,判断之类的识别。以及空引用高危判断。
ps:我说的是java ,其他不知道
fzss
2014-05-29 21:19:59 +08:00
ORDER OF GROWTH
dorentus
2014-05-29 21:32:54 +08:00
https://zh.wikipedia.org/wiki/循環複雜度
这个?
按定义数呗
本来就不是啥严禁的
soundbbg
2014-05-29 21:42:13 +08:00
一开始不需要过度优化,后面针对具体的瓶颈优化就好了。

拿循环做复杂度其实也挺逗的,谁知道函数嵌套了多少个函数,更不要说大部分不间断的程序都是死循环,你没看到只是因为别人都封装好了。

代码里不推荐多个嵌套循环这是必然的,但纯拿循环来说性能就和拿代码行数算KPI一个道理,况且计算机就是一个大循环。
ruandao
2014-05-29 23:21:14 +08:00
时间复杂度?
空间复杂度?
还是逻辑复杂度?
lijinma
2014-05-29 23:29:18 +08:00
@soundbbg 拿循环说性能挺逗?大哥,那你觉得纯研究算法的是靠什么来做标准?还不是靠循环,你这是藐视算法分析;

一个算法在数据很小的时候没多大作用,但是在数据很大的时候,n^2 和 n 那得有多大差距啊;

敢问兄弟,不靠循环,你靠什么来评判一个算法的时间复杂度?
soundbbg
2014-05-30 00:56:11 +08:00
@lijinma 你理解错了,我没有藐视算法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114883

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX