數據結構系列1 數據結構與算法

Chapter1 緒論

數據結構是相互之間存在一種或者多種特定關係的數據元素的集合。算法

面向過程:程序設計 = 數據結構 + 算法數組

數據結構的分類

  • 邏輯結構:數據對象中數據元素之間的關係。
    • 集合結構:數據元素除了同屬於一個集合以外,它們之間沒有其它關係。
    • 線性結構:線性結構中的元素之間是一對一的關係。
    • 樹形結構:數據元素之間存在一種一對多的層次關係。
    • 圖形結構:數據元素之間存在多對多的關係。
  • 物理結構(存儲結構):數據的邏輯結構在計算機中的存儲形式。存儲器主要是針對內存而言的,外部存儲器中的數據組織一般用文件結構來描述。
    • 順序存儲結構:把數據元素存放在地址連續的存儲單元裏,其數據間的邏輯關係和物理關係是一致的。
    • 連式存儲結構:把數據結構存儲在任意的存儲單元裏,這組存儲單元能夠是連續的,也能夠是不連續的。

抽象數據類型

  • C語言中,按照取值的不一樣,數據類型能夠分爲兩類:
    • 原子類型:不能夠再分節的基本類型,包括整型、實型、字符型等。
    • 結構類型:由若干個類型組合而成,是能夠再分解的,例如,整型數組是由若干整型數據組成的。

抽象是值抽取出事物具備的廣泛性的本質。 對已有的數據類型進行抽象,就有了抽象數據類型。 抽象數據類型(Abstract Data Type)是指一個數學模型及定義在該模型上的一組操做。bash

  • 描述抽象數據類型的標準格式:
ADT 抽象數據類型
Data
    數據元素之間邏輯關係的定義
Operation
    操做一
        初始條件
        操做結果描述
    操做二
        ...
    操做n
        ...
endADT
複製代碼

Chapter2 算法

算法的特性

  • 算法具備五個基本特性:
    • 輸入輸出:算法有零個或多個輸入,一個或多個輸出。
    • 有窮性:算法執行有限的步驟以後,自動結束而不會出現無限循環,而且每個步驟在可接受的時間之類完成。
    • 肯定性:算法的每一步都有肯定的含義,不會出現二義性。相同的輸入只會有惟一的輸出結果。
    • 可行性:每一步都可以經過執行有限的次數完成。

複雜度

  • 算法的時間複雜度:
    • 分析程序的運行時間時,最重要的是把程序當作是獨立於程序設計語言的算法或者一系列步驟。
    • 判斷一個算法的效率時,函數中的常數項和其餘次要項經常能夠忽略,而更應該關注主項 (最高階項)的階數。
  • 算法的空間複雜度:

參考資料:《大話數據結構》數據結構

相關文章
相關標籤/搜索