總結:
一、數據結構(Data Structure) 是數據的組織結構,用來組織、存儲數據。算法(Algorithm) 就是解決問題的方法或者過程。
二、數據結構分為邏輯結構和物理結構。邏輯結構分為集合結構、線性結構、樹形結構、圖形結構;物理結構分為順序存儲結構、鏈式存儲結構。
三、算法是一系列運算步驟。算法有5個基本特性,輸入、輸出、有窮性、確定性、可行性;算法最求5個目標,正確性、可讀性、健壯性、運行時間少、內存空間小。
四、「數組」 是實現線性表的順序結構存儲的基礎;「鏈表」 是實現線性表的鏈式存儲結構的基礎; 「棧」是一種后進先出的線性表;「隊列」是一種先進先出的線性表;「哈希表」是根據關鍵碼值直接進行訪問的數據結構;「字符串」是由零個或多個字符組成的有限序列;「樹」是由節點與節點之間的關系組成的有限集合;「圖」是由頂點的非空有限集合與邊的集合構成的結構。
五、「枚舉算法」也稱為窮舉算法,是按照問題本身的性質一一列舉出該問題所有可能的解;「遞歸」指的是一種通過重復將原問題分解為同類的子問題而解決的方法;「分治」就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并;「回溯」是一種選優搜索方法,按選優條件進行深度優先搜索,以達到目標;「貪心」是一種在每次決策時采用當前狀態下最優或最好的策略,從而希望導致結果是最好或最優的算法;「位運算」是針對二進制的運算,對每一個位進行布爾運算操作;「動態規劃」與分治法相似,都是通過組合子問題的解來求解原問題答案,將問題劃分為互不相交的子問題,遞歸的求解子問題,最后合并子問題的答案。
1. 數據結構
數據結構分為邏輯結構和物理結構。邏輯結構分為集合結構、線性結構、樹形結構、圖形結構;
物理結構分為順序存儲結構、鏈式存儲結構。
1.1 數組
「數組」 是實現線性表的順序結構存儲的基礎。
1.2 鏈表
「鏈表」 是實現線性表的鏈式存儲結構的基礎。
1.3 棧
「棧」是一種后進先出的線性表。
1.4 隊列
「隊列」是一種先進先出的線性表。
1.5 哈希表
「哈希表」是根據關鍵碼值直接進行訪問的數據結構。
1.6 字符串
「字符串」是由零個或多個字符組成的有限序列。
1.7 樹
「樹」是由節點與節點之間的關系組成的有限集合。
1.8 圖
「圖」是由頂點的非空有限集合與邊的集合構成的結構。
2. 算法
算法是一系列運算步驟。算法有5個基本特性,輸入、輸出、有窮性、確定性、可行性;算法最求5個目標,正確性、可讀性、健壯性、運行時間少、內存空間小。
1.1 枚舉算法
「枚舉算法」也稱為窮舉算法,是按照問題本身的性質一一列舉出該問題所有可能的解。
1.2 遞歸算法
「遞歸」指的是一種通過重復將原問題分解為同類的子問題而解決的方法。
1.3 分治算法
「分治」就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。
1.4 回溯算法
「回溯」是一種選優搜索方法,按選優條件進行深度優先搜索,以達到目標。
1.5 貪心算法
「貪心」是一種在每次決策時采用當前狀態下最優或最好的策略,從而希望導致結果是最好或最優的算法。
1.6 位運算
「位運算」是針對二進制的運算,對每一個位進行布爾運算操作。
1.7 動態規劃
「動態規劃」與分治法相似,都是通過組合子問題的解來求解原問題答案,將問題劃分為互不相交的子問題,遞歸的求解子問題,最后合并子問題的答案。