【數據結構知識點總結】一、基本概念

基本概念和術語

  1. 數據
  2. 數據元素
    數據元素是數據的基本單位。
    數據項是構成數據元素的不可分割的最小單位。
  3. 數據對象
    數據對象是具有相同性質的數據元素的集合,是數據的一個子集。
  4. 數據類型
    數據類型是一個值的集合和定義在此集合上的一組操作的總稱。
  5. 抽象數據類型(ADT)
    抽象數據類型描述了數據的邏輯結構和抽象運算,通常用(數據對象,數據關係,基本操作集)這樣的三元組來表示,從而構成一個完整的數據結構定義
  6. 數據結構
    數據結構是相互之間存在一種或多種特定關係的數據元素的集合。數據結構包括三方面的內容:邏輯結構、存儲結構和數據的運算。

數據結構的三要素

  1. 數據的邏輯結構
    數據的邏輯結構是指數據元素之間的邏輯關係,即從邏輯關係上描述數據。它與數據的存儲無關,是獨立於計算機的。數據的邏輯結構分爲線性結構和非線性結構。
    線性結構:結構中的數據元素之間只存在一對一的關係。
    在這裏插入圖片描述

  2. 數據的存儲結構
    存儲結構是指數據結構在計算機中的表示,也稱物理結構。數據的存儲結構是邏輯結構在計算機上的映射,它不能獨立於邏輯結構而存在。
    數據的存儲結構主要有順序存儲、鏈式存儲、索引存儲和散列存儲。

    • 順序存儲:邏輯上相鄰的元素物理位置上也相鄰。
      優點是可以實現隨機存取,,每個元素佔用最少的存儲空間;缺點是隻能使用相鄰的一整塊存儲單元,可能產生較多的外部碎片。
    • 鏈式存儲:不要求邏輯上相鄰的元素在物理位置上也相鄰,藉助指針來表示元素之間的邏輯關係。
      優點是不會出現碎片現象,能充分利用所有存儲單元;缺點是每個元素因存儲指針而佔用額外的存儲空間,且只能實現順序存取。
    • 索引存儲:在存儲元素信息的同時,建立附加的索引表。
      優點是檢索速度快;缺點是增加附加的索引表後會佔用較多的存儲空間。在增加和刪除數據時要修改索引表,會花費較多的時間。
    1. 散列存儲:根據元素的關鍵字直接計算出該元素的存儲地址,又稱Hash存儲。
      優點是檢索、增加和刪除結點的操作都很快;缺點是若散列函數不好,則可能出現元素存儲單元的衝突,解決衝突會增加時間和空間開銷。
  3. 數據的運算
    運算的定義是針對邏輯結構的,指出運算的功能;運算的實現是針對存儲結構的,指出運算的具體操作步驟。

鏈式存儲設計時,各個不同結點的存儲空間可以不連續,但結點內的存儲單元地址必須連續。

  • 對於兩種不同的數據結構,它們的邏輯結構和物理結構有可能完全相同。例如二叉樹和二叉排序樹,二叉排序樹可以採用二叉樹的邏輯表示和存儲方式,但它們的運算定義不同,以查找結點爲例:二叉樹的時間複雜度爲O(n)O(n),二叉排序樹的時間複雜度爲O(log2n)O(log_2n).
  • 線性表既可以用順序存儲的方式實現,也可以用鏈式存儲的方式實現。在順序存儲的方式下,在線性表中插入和刪除元素,平均要移動近一半的元素,時間複雜度爲O(n)O(n);而在鏈式存儲方式下,插入和刪除的時間複雜度都是O(1)O(1)

算法的基本概念
  算法是對特定問題求解步驟的一種描述,是指令的有限序列,其中每個指令表示一個或多個操作。具有以下五個特性:

  1. 有窮性
  2. 確定性
  3. 可行性
  4. 輸入
  5. 輸出

  通常設計一個“好”的的算法應達到以下目標:

  1. 正確性
  2. 可讀性
  3. 健壯性
  4. 效率與低存儲量需求

算法效率的度量是通過時間複雜度和空間複雜度來描述的。

某算法的時間複雜度爲O(n2)O(n^2),表明該算法的執行時間與n2n^2成正比,問題規模仍是n

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章