緒論
- 2022 年 5 月 18 日
- 筆記
- Python數據結構與演算法
針對Python數據結構與演算法(裘宗燕版)中的第一章緒論最後的問題
數據結構
概念
數據與數據之間的結構關係(數組、隊列、樹、圖等結構)
類別
分為邏輯數據結構和存儲數據結構兩種
存儲方法
- 順序存儲方法(順序存儲結構)
- 鏈接存儲方法(鏈式存儲結構)
同一種邏輯結構可採用不同的存儲方法(以上兩種之一或組合),這主要考慮的是運算方便及演算法的時空要求。
演算法
解決問題的步驟
總結
程式 = 數據結構 + 演算法
數據是程式的中心。數據結構和演算法兩個概念間的邏輯關係貫穿了整個程式世界,首先二者表現為不可分割的關係。沒有數據間的有機關係,程式根本無法設計。
數據結構與演算法關係
數據結構是底層,演算法高層。數據結構為演算法提供服務。演算法圍繞數據結構操作。
解決問題(演算法)需要選擇正確的數據結構
例如:演算法中經常需要對數據進行增加和刪除用鏈表數據結構效率高,數組數據結構因為增加和刪除需要移動數字每個元素所有效率低。
數據結構特點
每種數據結構都具有自己的特點。例如:隊列:先進先出。棧:先進後出。
演算法的特徵
演算法具有五個基本特徵:輸入、輸出、有窮性、確定性和可行性。
數據結構應用
數據結構往往同高效的檢索演算法、索引技術、排序演算法有關
數據結構(邏輯數據結構)通過電腦語言來實現數據結構(存儲數據結構)
例如:樹型數據結構:通過電腦語言中的數組(節點)和指針(指向父節點)來實現。
存儲結構
邏輯數據結構的實現。存儲結構通過電腦語言實現。
例如:堆數據結構,堆是一棵完全二叉樹,所以適宜採用順序存儲結構(順序存儲:數組),這樣能夠充分利用存儲空間。
演算法目的
演算法是為數據結構服務。例如:數據結構通常伴隨有查找演算法、排序演算法等
數據結構的優劣
一種數據結構的優劣是在實現其各種運算的演算法中體現的。