數據結構
邏輯結構:集合,線性,樹形,圖形
物理結構(存儲結構);順序存儲,鏈式存儲
算法特性:輸入、輸出、有窮性、確定性、可行性
常見時間複雜度
常見數據結構的時間複雜度(集合,線性,樹,圖)
線性表(順序存儲結構、鏈式存儲結構)
順序存儲結構:查找O(1),增加O(n),刪除O(n)
鏈式存儲結構(單鏈表,靜態鏈表,循環鏈表,雙向鏈表):查找O(n),增加O(1),刪除O(1)
棧和隊列
棧:順序棧和鏈棧的時間複雜度都爲O(1),空間上順序棧要預先分配足夠的空間,鏈棧要存儲指針數據,所以都有空間浪費;
順序隊列:普通順序隊列有隊列溢出的問題,入隊時間複雜度爲O(1),出隊時間複雜度爲O(n),循環順序隊列依然有隊列溢出的問題,但是出入隊列的時間複雜度都爲O(1);
鏈式隊列:出入隊列的時間複雜度都爲O(1),相對於循環順序隊列的需要一次性分配空間且空間不可變,鏈式隊列在用到的時候才分配空間且空間不受限制。
串
樸素模式匹配:平均時間複雜度:O((n+m)/2),最壞時間複雜度:O((n-m+1)*m)
KMP算法:最壞時間複雜度:O(n+m),當模式與主串存在許多“部分匹配”的情況下較有優勢
樹
樹的存儲結構:雙親表示法、孩子表示法、孩子兄弟表示法;
二叉樹:斜樹、滿二叉樹、完全二叉樹,哈弗曼樹
圖
圖的概念:無向圖,有向圖,簡單圖,無向完全圖,有向完全圖,網,連通圖
圖的存儲:鄰接矩陣表、鄰接表、十字鏈表、鄰接多重表、邊集數組
圖的遍歷:深度優先遍歷、廣度優先遍歷
最小生成樹算法:普里斯、克魯斯卡爾 http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html 克魯斯卡爾針對邊來展開,變數少的時候效率較高
最短路徑:迪傑斯特拉 http://blog.csdn.net/mu399/article/details/50903876、弗洛伊德 http://blog.csdn.net/bjtu_dubing/article/details/50333027
拓撲排序:
關鍵路徑:
查找
順序表查找:
有序表查找:折半查找、插值查找、斐波那契
線性索引查找:稠密索引,分塊索引,排序索引
二叉排序樹:
AVL樹:
多路查找樹(B樹):2-3樹、2-3-4樹、B+樹
排序
排序的概念:穩定排序,不穩定排序,內排序、外排序
排序算法:冒泡排序、簡單排序,插入排序,希爾排序http://blog.csdn.net/morewindows/article/details/6668714、堆排序,歸併排序 http://www.cnblogs.com/chengxiao/p/6194356.html、快速排序