軟體複雜度衡量方法有許多種:
對於軟體複雜度最著名的可能就是tom mccabe的方法了。該方法通過計算子程式中的「決策點(decision points)」的數量來衡量複雜度。
圈複雜度用來評價**複雜度,以函式為單位,數值越大表示**的邏輯分支越多,理解起來也更複雜。圈複雜度可以成為編碼及重構的重要參考指標,以指導撰寫可讀性高的**。有關圈複雜度的定義,可以自行搜尋。《**大全》有如下的定義:
計算子程式中決策點數量的技術 (**大全2,19章p458)
1.由1
計數,一直往下通過程式。
2.一旦遇到以下關鍵字,或者其同類的詞,就加1:
if, while, repeat, for, and, or
3. 給case(switch)語句中的每一種情況都加1.
作者也給了處理複雜度度量結果的建議:
這些數字和策略都不是絕對的,正如作者所言至少應當視其為警示。0-5: 子程式可能還不錯
6-20: 得想辦法簡化子程式了
10+ 把子程式的某一部分拆分成另乙個子程式並呼叫它。
把子程式的一部分提取成兩乙個子程式,不會降低整個程式的複雜度,只是把決策點移到其他地方。但是這樣做可以降低你在同意時間必須關注的複雜度水平。由於重點是要降低你需要在頭腦中同時考慮的專案的數量,所有降低乙個給定子程式的複雜度是有價值的。
時間複雜度空間複雜度介紹
演算法複雜度分為 時間複雜度和空間複雜度。度量乙個演算法執行時間的方法有兩種 在給出間複雜度的概念之前先來看看什麼是時間頻度?計算1到100的和 第一種 使用for迴圈 int sum 0 int n 100for int i 1 i n i 時間頻度t n n 1注意 因為最後還要在判斷一次,所以...
時間複雜度和空間複雜度介紹
乙個演算法的優劣主要從演算法的執行時間和所需要占用的儲存空間兩個方面衡量。時間複雜度是程式執行的時間,也可以說是次數 空間複雜度是程式占用的空間 來自 資料結構 原圖官方定義 清華出版社 時間複雜度 首先要說的是,時間複雜度的計算並不是計算程式具體執行的時間,而是演算法執行語句的次數。當我們面前有多...
簡單介紹 空間複雜度
是什麼?指執行某個演算法所需要的記憶體空間 由於現在科技的發展我們完全可以用空間去換取時間 例 要判斷某年是不是閏年?花點心思來寫乙個演算法,每給乙個年份,就可以通過這個演算法計算得到是否是閏年的結果。事先建立乙個有2050個元素的陣列,然後把所有的年份按下錶的數字對應,如果是閏年,則此陣列元素的值...