緒論

 

 針對Python數據結構與演算法(裘宗燕版)中的第一章緒論最後的問題

數據結構

概念

數據與數據之間的結構關係(數組、隊列、樹、圖等結構)

類別

分為邏輯數據結構存儲數據結構兩種

存儲方法

  1. 順序存儲方法(順序存儲結構) 
  2. 鏈接存儲方法(鏈式存儲結構) 

同一種邏輯結構可採用不同的存儲方法(以上兩種之一或組合),這主要考慮的是運算方便及演算法的時空要求。

演算法

解決問題的步驟

總結

程式 = 數據結構 + 演算法 

數據是程式的中心。數據結構和演算法兩個概念間的邏輯關係貫穿了整個程式世界,首先二者表現為不可分割的關係。沒有數據間的有機關係,程式根本無法設計。

數據結構與演算法關係

數據結構是底層,演算法高層。數據結構為演算法提供服務。演算法圍繞數據結構操作。

解決問題(演算法)需要選擇正確的數據結構

例如:演算法中經常需要對數據進行增加和刪除用鏈表數據結構效率高,數組數據結構因為增加和刪除需要移動數字每個元素所有效率低。

數據結構特點

每種數據結構都具有自己的特點。例如:隊列:先進先出。棧:先進後出。

演算法的特徵

演算法具有五個基本特徵:輸入、輸出、有窮性、確定性和可行性。

數據結構應用

數據結構往往同高效的檢索演算法、索引技術、排序演算法有關

數據結構(邏輯數據結構)通過電腦語言來實現數據結構(存儲數據結構)

例如:樹型數據結構:通過電腦語言中的數組(節點)和指針(指向父節點)來實現。

存儲結構

邏輯數據結構的實現。存儲結構通過電腦語言實現。  

例如:堆數據結構,堆是一棵完全二叉樹,所以適宜採用順序存儲結構(順序存儲:數組),這樣能夠充分利用存儲空間。

演算法目的

演算法是為數據結構服務。例如:數據結構通常伴隨有查找演算法、排序演算法等

數據結構的優劣

一種數據結構的優劣是在實現其各種運算的演算法中體現的。