時間複雜度和空間複雜度(第二天)

1.算法時間複雜度(算法的時間的量度)

T(n) = O(f(n))

定義:在計算算法分析時,語句總的執行次數T(n)是關於問題規模n的函數,進而分析T(n)隨n的變化情況並確定T(n)的數量.

執行次數 = 時間
最優算法—->隨着時間的增大,T(n)增長最慢的算法最優

2.推導算法時間複雜度(大O階)的方法:
1) 常數1取代運行時間中的所有加法常數—–>O(1)
2) 在修改後的運行次數函數中,只保留最高階項。
3)如果最高項階存在且不爲1,那麼去除在於這個項相乘的常數。———>大O階

常數階,O(1)

線性階,一般含有非嵌套循環(單個循環)的會涉及到,就是隨着函數規模n的擴大,對應計算次數呈之前增長O(n)

平方階,含有嵌套循環(多個循環)O(n^循環次數)

對數階,比如O(logn)

3.函數調用的時間複雜度分析
常用的時間複雜度所耗費的時間從小到大一次爲:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

4.最壞情況O(n)與平均情況(期望的平均運行時間)


1.算法的空間複雜度
S(n) = O(f(n))—–>f(n)指的是關於n所存儲空間的函數
通過計算算法所需的存儲空間實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章