數據結構筆記一:諸論


數據結構

基本概念

數據

數據是信息的載體,是描述客觀事物屬性。

數據元素,數據項

數據元素是數據的基本單位,通常作為一個整體進行考慮和處理;

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

數據結構、數據對象

數據結構是相互之間存在一種或多種特定關系的數據元素的集合;

數據對象是具有相同性質的數據元素的集合,是數據的一個子集。

數據類型,抽象數據類型

數據類型是一個值的集合和定義在此集合上的一組操作的總稱

  1. 原子類型:其值不可再分的數據類型
  2. 結構類型:其值可以再分解為若干成分(分量)的數據類型
  3. 抽象數據類型:抽象數據組織及與之相關的操作

數據結構三要素

數據的邏輯結構

image-20210805172402474

集合:結構種的元素之間除“同屬一個集合”外,別無其他關系。

線性關系:結構種的數據元素之間只存在一對一的關系。

樹形關系:結構種的數據元素之間存在一對多的關系。

圖狀結構(網狀結構):結構種的數據元素之間存在多對多的關系。

數據的存儲結構

存儲結構是數據結構在計算機種的表示(映像)--物理結構

順序存儲

image-20210805172740882

把邏輯上相鄰的元素存儲再物理位置上也相鄰的存儲單元中。

鏈式存儲

image-20210805172747766

邏輯上相鄰的元素再物理位置上可以不相鄰。

索引存儲

image-20210805172817313

在存儲元素信息的同時,還簡歷附加的索引表。索引表的每項稱為索引項,索引項的一般形式是(關鍵字,地址)

散列存儲

根據元素的關鍵字直接計算出該元素的存儲地址,又稱哈希存儲。

數據的運算

施加在數據上的運算包括運算的定義和實現。

運行的定義是針對邏輯結構的,指出運算的功能;

運算的實現是針對存儲結構的,指出運算的具體步驟。

算法

基本概念

算法是對特定問題求解步驟的一種描述。5個重要特性

  1. 有窮性:步驟,時間有窮
  2. 確定性:步驟確定,相同輸入時輸出確定
  3. 可行性:執行有限次基本運算來實現
  4. 輸入:一個算法有兩個或多個輸入
  5. 輸出:一個算法有一個或多個輸出

目標:

  1. 正確性:正確低解決問題
  2. 可讀性:幫助人們理解
  3. 健壯性:輸入非法時,應能適當地做出反應或進行處理
  4. 效率與低存儲量需求:效率高,最大存儲空間小

算法效率的度量

時間復雜度

事前估計算法時間開銷T(n)與問題規模n的關系

算法中所有語句的頻度之和記為\(T(n)\),通常采用算法基本運算的頻度\(f(n)\)來分析算法的時間復雜度局。

\[T(n)=O(f(n)) \]

\(O\)的含義是\(T(n)\)​的數量級

  • 加法規則

    \[T(n)=T_1(n)+T_2(2)=O(f(n))+O(g(n))=O(max(f(),g())) \]

  • 乘法規則

    \[T(n)=T_1(n)+T_2(2)=O(f(n))+O(g(n))=O(f(n)\times 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) \]

最壞時間復雜度:在最壞情況下,算法的時間復雜度

平均時間復雜度:所有可能輸入實例在等概論出現的情況下,算法的期望運行時間

最好時間復雜度:在最好情況下,算法的時間復雜度

image-20210805203109186

空間復雜度

算法的空間復雜度\(S(n)\)定義為該算法所耗費的存儲空間,它是問題規模n的函數,記為

\[S(n)=O(g(n)) \]

算法原地工作--算法所需內存空間為常量

image-20210805203200502


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM