1. 程式人生 > 其它 >資料結構複習筆記

資料結構複習筆記

第一章 緒論

1. 資料結構的基本概念

資料: 資料是資訊的載體,是描述客觀事物屬性的數、字元及所有能輸入到計算機中並被計算機程式識別和處理的符號的集合。資料是計算機程式加工的原料。

資料元素: 是資料的基本單位,通常作為一個整體進行考慮和處理。

資料項: 一個數據元素可由若干資料項組成,資料項是構成資料元素的不可分割的最小單位。

資料物件:具有相同性質的資料元素的集合,是資料的一個子集。

資料結構: 是相互之間存在一種或多種特定關係的資料元素的集合。資料結構是計算機中儲存、組織資料的方式。

2. 資料結構的三要素

集合結構: 各個元素同屬一個集合,別無其他關係

線性結構: 資料元素之間是一對一的關係。除了第一個元素,所有元素都有唯一的前驅;除了最後一個元素,所有元素都有唯一的後繼。

樹形結構: 資料元素之間是一對多的關係。

圖狀結構: 資料元素之間是多對多的關係。

資料的運算: 對於每一種特定的資料結構,定義出相應的資料操作。(例如:增刪改查等)

物理結構: 資料在計算機記憶體中的實際儲存方法,主要包括順序儲存、鏈式儲存、索引儲存、雜湊儲存。資料的儲存結構會影響儲存空間分配的方便程度,會影響資料運算的速度。

3. 資料型別、抽象資料型別

資料型別: 是一個值的集合和定義在此集合上的一組操作的總稱。

  • 原子型別,其值不可再分的資料型別。(例如:bool,int)
  • 結構型別,其值可以再分的資料型別。(例如:struct結構體)

抽象資料型別(Abstract Data Type):

是抽象資料組織及與之相關的操作。定義一個ADT實際上就是定義一個數據結構。

4. 演算法的基本概念

演算法: 是對特定問題求解步驟的一種描述,它是指令的有限序列。

演算法的特性: (有一個不滿足,則不稱之為演算法)

  • 有窮性 (在有限的步驟和時間內可以得到結果)
  • 確定性 (對同一個輸入,必須有同一個輸出)
  • 可行性 (演算法可以通過程式設計來實現)
  • 輸入 (有0個或多個輸入)
  • 輸出 (有1個或多個輸出)

“好演算法”的特質:

  • 正確性 (正確的求解問題)
  • 可讀性 (易於理解)
  • 健壯性 (耐操,對非法輸入能夠正確的處理)
  • 高效率和低儲存量 (時間複雜度和空間複雜度低)

5. 演算法的時間複雜度

什麼是時間複雜度: 演算法的時間複雜度是一個函式,它定性的描述該演算法的執行時間。

  • 加法規則:

    \[T(n) = T_1(n) + T_2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n))) \]
  • 乘法規則:

    \[T(n) = T_1(n)*T_2(n)=O(f(n))*O(g(n))=O(f(n)*g(n)) \]

演算法的時間複雜度: \(O(1) < O(log_2n) < O(n) < O(nlog_2n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)\)