一、數據結構基本概念
1. 數據:數據是對客觀事物的符號表示,在計算機科學中是指所有能輸入到計算機中並被計算機程序處理的符號的總稱。
2. 數據元素:數據元素是數據的基本單位,在計算機程序中通常作為一個整體進行考慮和處理。一個數據元素可由若干個數據項組成。數據項是數據的不可分割的最小單位。
3. 數據對象:數據對象是性質相同的數據元素的集合,是數據的一個子集,如整型數據對象。
4. 數據結構:數據結構是相互之間存在一種或多種特定關系的數據元素的集合。根據數據元素之間關系的不同特性,通常有下列4類基本結構:(1)集合;(2)線性結構;(3)樹形結構;(4)圖狀結構或網狀結構。
數據結構的形式定義為:數據結構是一個二元組
Data_Structure = (D, S)
其中:D是數據元素的有限集,S是D上關系的有限集。
5. 邏輯結構:上述數據結構的定義是對操作對象的一種數學描述。結構定義中的“關系”描述的是數據元素之間的邏輯關系,因此又稱為邏輯結構。
6. 物理結構:數據結構在計算機中的表示(又稱映像)稱為數據的物理結構,又稱存儲結構。
數據元素之間的關系在計算機中有兩種不同的表示方法:順序映像和非順序映像,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。
7. 抽象數據類型:抽象數據類型(ADT)是指一個數學模型以及定義在該模型上的一組操作。可細分為3種類型:原子類型,固定聚合類型,可變聚合類型。
二、算法和算法分析
1. 算法:算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作;此外,一個算法還具有下列5個重要特性:
(1)有窮性。一個算法必須總是在執行有窮步之后結束,且每一步都可在有窮時間內完成。
(2)確定性。算法中每一條指令必須有確切的含義讀者理解時不會產生二義性。並且,在任何條件下,算法只有唯一的一條執行路徑,即對於相同的輸入只能得出相同的輸出。
(3)可行性。一個算法是能行的,即算法中描述的操作都是可以通過已經實現的基本運算執行有限次來實現的。
(4)輸入。零個或多個的輸入。
(5)輸出。一個或多個的輸出。
2. 算法設計的要求
通常設計一個“好”的算法應考慮達到以下目標:
(1)正確性。
(2)可讀性。
(3)健壯性。
(4)效率與低存儲量需求。
3. 算法效率的度量
度量時間復雜度的兩種方法:
(1)事后統計的方法。
(2)事前分析估算的方法。一個用高級程序語言編寫的程序在計算機上運行時所消耗的時間取決於下列因素:
①依據的算法選用何種策略;
②問題的規模;
③書寫程序的語言,對於同一個算法,實現語言的級別越高,執行效率就越低;
④編譯程序所產生的機器代碼的質量;
⑤機器執行指令的速度。
空間復雜度。