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