「java圈复杂度计算」java 空间复杂度
今天给各位分享java圈复杂度计算的知识,其中也会对java 空间复杂度进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
软件测试java类圈复杂度是什么意思
圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。
两个方法是指类里面有两个函数对吧?!
是的
是要有4个elseif语句么?
不是的,但是如果你写成嵌套的四个else if,那么圈复杂度肯定超过4,圈复杂度的计算用很多工具可以辅助完成,比如eclipse metrics, java ncss等。
人工计算圈复杂度比较复杂,限于篇幅无法详细介绍,网上相关介绍很多,可以直接baidu检索
java 计算时间复杂度
for(int p=0;pn*n;p++)
for(int q=0;qp;q++)
sum--;
下面我来简单解释一下为什么是O(n^4)
p的所有取值,以及相对性的sum运算的次数如下
p的取值:0 1 2 3 4 ... (n^2 -1)
sum次数:0 0 1 2 3 ... (n^2 -2)
从上面的式子我们知道sum--执行的次数也就是sum次数的累加和:
0+0+1+2+3+...+(n^-2)=1+2+3+ ... +(n^2 -2)这里我们可以用求和公式,但是需要搞定一个这里有多少项,很明显(n^2 -2)项,带入求和公式如下
=(1+(n^2 -2))*(n^2 -2)/2=(n^2 -1)(n^2 -2)/2=(n^4 -3*n^2 +2)/2
所以答案是O(n^4)
圈复杂度的计算
它的计算方法很简单:
计算公式1:V(G)=e-n+2p。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量,p图的连接组件数目(图的组件数是相连节点的最大集合)。因为控制流图都是连通的,所以p为1.
计算公式2:V(G)=区域数=判定节点数+1。其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数。
对于多分支的CASE结构或IF-ELSEIF-ELSE结构,统计判定节点的个数时需要特别注意一点,要求必须统计全部实际的判定节点数,也即每个ELSEIF语句,以及每个CASE语句,都应该算为一个判定节点。
计算公式3:V(G)=R。其中R代表平面被控制流图划分成的区域数。
针对程序的控制流图计算圈复杂度V(G)时,最好还是采用第一个公式,也即V(G)=e-n+2;而针对模块的控制流图时,可以直接统计判定节点数,这样更为简单;针对复杂的控制流图是,使用区域计算公式V(G)=R更为简单。
java圈复杂度计算的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 空间复杂度、java圈复杂度计算的信息别忘了在本站进行查找喔。
发布于:2022-12-09,除非注明,否则均为
原创文章,转载请注明出处。