一般來說,評價乙個演算法的好壞就是看它的時間和空間,因為空間現在的記憶體都很大,考慮的比較少,我們主要考慮演算法的時間複雜度怎樣進行度量。
問題的規模n定義:
問題規模n與該演算法在執行時所佔的空間s與所耗費的時間t有關。
對不同的問題其含義不同:
對矩陣是階數;
對多項式運算是多項式項數;
對圖是頂點個數;
對集合運算是集合中元素個數。
衡量演算法效率的方法:
(1)事後統計法
缺點:1.必須執行程式 2.其他因素掩蓋演算法本質
(2)事前統計法
我們更傾向於事前統計法。
和演算法執行時間有關的因素:
(1)演算法選用的策略
(2)問題的規模
(3)編寫程式的語言
(4)編譯程式產生的機器**的質量
(5)計算機執行指令的速度
乙個演算法的執行時間大致上等於其所有語句執行時間的總和,對於語句的執行時間是指該條語句的執行次數和執行一次所需時間的乘積。
分析:演算法執行時間並不是程式實際執行的時間,而是演算法中所有基本操作語句(原操作)的執行時間。
語句頻度:語句在乙個演算法中重複執行的次數。
演算法的時間複雜度
演算法的時間複雜度:t(n) = o( f(n) )
,f(n)
就是演算法中語句執行的總次數。所以只要我們知道了演算法中所有語句執行的總次數,就知道了時間複雜度。
x=x+1 ; 時間複雜度為o(1),稱為常量階;
for (i=1; i<=n; i++) x=x+1; 時間複雜度為o(n),稱為線性階;
for (i=1; i<=n; i++) for(j=1; j<=n; j++) x=x+1; 時間複雜度為o(n2),稱為平方階
常用的時間複雜度頻率表:
網課筆記,如有錯誤歡迎指正(●』◡』●)
基礎知識 演算法複雜度
時間複雜度 time complexity 又稱時間複雜性或計算複雜度,它是演算法有效性的度量之一。時間複雜度是乙個演算法執行時間的相對量度,因為執行簡單操作所需要的時間因機器的軟硬體環境不同而不一樣,所以只討論影響執行時間的另乙個因素 演算法中進行簡單操作次數的多少,所以通常把演算法中包含簡單操作...
基礎知識 演算法複雜度
時間複雜度 time complexity 又稱時間複雜性或計算複雜度,它是演算法有效性的度量之一。時間複雜度是乙個演算法執行時間的相對量度,因為執行簡單操作所需要的時間因機器的軟硬體環境不同而不一樣,所以只討論影響執行時間的另乙個因素 演算法中進行簡單操作次數的多少,所以通常把演算法中包含簡單操作...
資料結構基礎知識 時間複雜度 空間複雜度 陣列
劍指offer 2.3.1 陣列 陣列時間高效指演算法設計合理,執行效率高,可以用時間複雜度來度量。演算法的時間複雜度由巢狀最深層語句的頻度決定的。eg.for int i 2 i n i for int j 2 j i 1 j 時間複雜度為 o n 2 時間複雜度為o n 2 o n 2 o n2...