關於寫這篇資料結構與演算法的部落格,純粹是為了撿回之前一直沒有掌握好的知識點,通過自己總結的方式,也能夠更好的理解
知識架構圖
從廣義上講,資料結構就是指一組資料的儲存結構,演算法就是運算元據的一組方法。資料結構是為演算法服務的,演算法是要作用再特定的資料結構上的
常見演算法與資料結構:10個資料結構:陣列、連結串列、棧、佇列、雜湊表、二叉樹、堆、跳錶、圖、Trie樹;10個演算法:遞迴、排序、二分查 找、搜尋、雜湊演算法、貪心演算法、分治演算法、回溯演算法、動態規劃、字串匹配演算法
演算法複雜度
⼤O複雜度表示法
公式:T(n)=O(f(n))
T(n)表示程式碼執行的時間;n表示資料規模的大小;f(n)表示每行程式碼 執行的次數總和。因為這是一個公式,所以用f(n)來表示。公式中的O,表示程式碼的執行時間T(n)與f(n)表示式成正比。大O時間複雜度實際上並不具體表示程式碼真正的執行時間,而是表示程式碼執行時間隨資料規模增⻓的變化趨勢,所以,也叫作漸進時間複雜度(asymptotic time complexity),簡稱時間複雜度。
時間複雜度分析
時間複雜度的全稱是漸進時間複雜度,表示演算法的執行時間與資料規模之間的增⻓關係
-
只關注迴圈執行次數最多的一段程式碼
我們在分析一個演算法、一段程式碼的時間複雜度的時候,也只關注迴圈執行次數最多的那一段 程式碼就可以了。這段核心程式碼執行次數的n的量級,就是整段要分析程式碼的時間複雜度 -
加法法則:總複雜度等於量級最大的那段程式碼的複雜度
-
乘法法則:巢狀程式碼的複雜度等於巢狀內外程式碼複雜度的乘積
空間複雜度分析
空間複雜度全稱就是漸進空間複雜度(asymptotic space complexity),表示演算法的儲存空間與資料規模之間的增⻓關係。
小結
複雜度也叫漸進複雜度,包括時間複雜度和空間複雜度,用來分析演算法執行效率與資料規模之間的增⻓關係,可以粗略地表 示,越高階複雜度的演算法,執行效率越低。常⻅的複雜度並不多,從低階到高階有:O(1)、O(logn)、O(n)、O(nlogn)、O(n2 )。
本作品採用《CC 協議》,轉載必須註明作者和本文連結