數(shù)據(jù)結構
-是計算機存儲、組織數(shù)據(jù)的方式。是算法的基礎。
算法
-是特定問題求解步驟的描述,計算機指令的集合
區(qū)別
數(shù)據(jù)結構只是靜態(tài)的描述了數(shù)據(jù)元素之間的關系,高效的程序需要在數(shù)據(jù)結構的基礎上設計和選擇算法 。
-算法是為了解決實際問題而設計的
-數(shù)據(jù)結構是算法需要處理問題的問題載體。
-程序核心=數(shù)據(jù)結構+算法
算法分類
1.分治法:有明確的執(zhí)行方式。----常用算法,高頻
-拆分目標,執(zhí)行小目標,合并
2.最短路徑法:有明確的目的,找尋有效的執(zhí)行方式。----多用于游戲
3.貪婪(貪心)算法:沒有明確的目標,沒有明確的執(zhí)行方式。分析當前環(huán)境,找尋目標,有效執(zhí)行方式。----多用于人工智能,機器學習之類
算法五大特性
1.輸入:0或多個輸入。
2.輸出:至少有一個或者多個輸出。
3.有窮性:算法在執(zhí)行有限步驟后,自動結束而不會無限循環(huán),且每一步在可接收時間內(nèi)完成。
4.確定性:算法的每一步驟都有明確含義,不會出現(xiàn)二義性。
5.可行性:算法的每一步都必須是可行的。即,每一步都能通過執(zhí)行有限次數(shù)完成。
數(shù)據(jù)結構分類
邏輯結構
1.幾何結構:元素和元素之間沒有關聯(lián)關系。如:mao、不定參、枚舉。。。
2.線性結構:元素和元素之間1:1,。如,數(shù)組,切片,鏈表
3.樹形結構:元素和元素是一對多的關系。如:二叉樹,多叉樹
4.圖形結構:元素和元素是多對多的關系。
物理結構(存儲結構)
1.線性存儲:數(shù)據(jù)元素存放在連續(xù)的內(nèi)存單元中。查詢效率高。插入、刪除效率低。
2.鏈式存儲:數(shù)據(jù)元素散亂地存放在內(nèi)存單元中,可通過指針找到順序。插入、刪除效率高,查詢效率低。