算法打卡第一天:複雜度分析

在這裏插入圖片描述

大O

大O時間複雜度表示代碼隨着數據規模增長的變化趨勢
注意點:
只關注執行最多的一段代碼
加法法則:總複雜度等於量級最大的那段代碼的時間複雜度
乘法法則:嵌套的代碼的複雜度等於嵌套內外代碼複雜度的乘積

常見的時間複雜度
常量階 O(1)
指數階 O(2的N次方)
對數階 O(logN)
階乘階 O(N!)
線性階 O(N)
線性對數階 O(N * logN)
平方階 O(N的2次方)
立方階 O(N的3次方)
K方階 O(N的K次方)
在這裏插入圖片描述

可以粗略地表示,越高階複雜度的算法,執行效率越低。常見的複雜度並不多,從低階到高階有:O(1)、O(logn)、O(n)、O(nlogn)、O(n2)

最好:最好時間複雜度表示:最理想狀態下執行這段代碼的時間複雜度。比如排序一段數組結果本身就是有序的。
最壞:最壞時間複雜度表示:最糟糕狀態下執行這段代碼的時間複雜度。
平均:又叫加權平均時間複雜度或者期望時間複雜度。是 情況與出現這情況的概率的乘積的總和。
均攤:均攤時間複雜度,又叫攤還分析法。均攤時間複雜度就是一種特殊的平均時間複雜度。
思路:每一次 O(n) 的插入操作,都會跟着 n-1 次 O(1) 的插入操作,所以把耗時多的那次操作均攤到接下來的 n-1 次耗時少的操作上,均攤下來,這一組連續的操作的均攤時間複雜度就是 O(1)。這就是均攤分析的大致思路。
空間複雜度:算法的存儲空間與數據規模之間的增長關係,也可以用大O分析法表示

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