圈複雜度計算方式
圈複雜度(cc) = 判斷條件個數 + 1其中1代表函式本身的複雜度
關鍵字:if, else if, for, while, &&, ||, case, catch
等。
對常用降低圈複雜度的方法if,if~else, if~else if ,for, switch , while
語句進行簡要說明:之後函式的圈複雜度是所有的語句判斷數加函式本身
1. 採用三元表示式
舉例
if
(condition)
else
可修改為:
c =
(condition)
? a : b;
2. 合併條件表示式
舉例:
if
(a || b || c )
可修改為:
bool flag = a || b || c ;
if(flag)
3. 拆分成子函式
4.switch…case…
可以使用map
5. 去掉沒有必要的else
if
(false
)else
可修改為:
if
(false
)c = a;
6. 重構函式
舉例:同一條件多處出現
if
(list.
empty()
)}else}if
(a)
可修改為:
if
(a)else
// do something 3...
}
複雜度 程式開發中降低複雜度的核心方法
降低複雜度的核心方法主要三個步驟 第一步,暴力解法。在沒有任何時間 空間約束下,完成 任務的開發。沒有太多的套路,只要圍繞你面臨的問題出發,大膽發揮想象去嘗試解決即 無效操作處理。將 中的無效計算 無效儲存剔除,降低時間或空間複雜度。需要學會並掌握遞迴 二分法 排序演算法 動態規劃等常用的演算法思維...
圈複雜度計算
一 公式 vg m n p vg m n 2p g 代表強連通有向圖,m 代表強連通有向圖的弧數,n 代表強連通有向圖的節點數,p 是g中分離部分的數目,預設是1 m和n都很清晰,當我們要用公式計算的時候p的值不固定,很難計算。為什麼會出現p和2p的情況呢 如圖所示,這是乙個控制流圖,入度是2,出度...
軟體測試 圈複雜度
圈複雜度 在軟體測試的概念裡,它用來衡量乙個模組判定結構的複雜程度,數量上表現為線性無關的路徑條數,即 合理的預防錯誤所需測試的最少路徑條數。圈複雜度 大 說明程式 可能 質量低且難於測試和維護 根據經驗,程式的可能錯誤和高的圈複雜度有著很大關係。圈複雜度的原理 其實就是 分支的個數 圈複雜度為1,...