「java圈复杂度计算」java 空间复杂度

博主:adminadmin 2022-12-09 14:57:06 67

今天给各位分享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圈复杂度计算的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-09,除非注明,否则均为首码项目网原创文章,转载请注明出处。