第1章 概論
目錄
數據結構與算法_師大完整教程目錄(更有python、go、pytorch、tensorflow、爬蟲、人工智能教學等着你):https://www.cnblogs.com/nickchen121/p/13768298.html
一、數據結構的基本概念與術語
1.1 數據結構的基本概念
- 數據結構:按一定的邏輯結構組成的一批數據,使用某種存儲結構將這批數據存儲於計算機中,並在這些數據上定義了一個運算集合
1.2 數據的邏輯結構
-
邏輯結構的種類:
- 集合
- 線性結構
- 樹形結構
- 圖狀結構
-
數據的邏輯結構:數據和數據之間存在的邏輯關系
-
開始結點:結點沒有前驅結點
-
終端結點:結點沒有后繼結點
-
內部結點:既不是開始結點也不是終端結點
-
注:有時候,邏輯結構簡稱為數據結構
1.3 數據的存儲結構
-
存儲結構的種類:
- 順序存儲
- 鏈式存儲
- 索引存儲
- 散列存儲
-
數據的存儲結構:數據在計算機中的存儲方式
-
順序存儲:邏輯上相鄰的結點物理位置也相鄰
-
鏈式存儲:邏輯上相鄰的結點物理位置不一定相鄰(可相鄰可不相鄰)
-
索引存儲:根據結點的索引號確定該結點的存儲地址
-
散列存儲:結點在計算機中的存儲地址由h(函數)決定
- 存儲密度 = 數據本身所占存儲空間的大小 / 整個數據結構所占存儲空間的大小
- 注:順序存儲密度 = 1;鏈式存儲密度 < 1
1.4 數據的運算集合
-
數據的運算:定義在數據的邏輯結構上,具體實現依賴於數據的存儲結構
-
數據的運算集合
- 插入
- 刪除
- 檢索
- 輸出
- 排序
二、數據類型和抽象數據類型(大綱未規定)
2.1 數據類型
- 數據類型:反映了數據的取值范圍以及對這類數據可以施加的運算
- 數據類型的兩個方面:數據屬性 + 在數據上可以施加的運算集合
- 注:數據結構是數據存在的形式
2.2 抽象數據類型
- 抽象數據類型:數據類型的進一步抽象,基本數據類型的延伸和發展
2.3 抽象數據類型的描述和實現
- 抽象數據類型的描述:抽象數據類型的名稱 + 數據的集合 + 數據之間的關系和操作的集合
- 抽象數據類型的實現:依賴於程序設計語言實現
三、算法和算法分析
3.1 算法的基本概念和基本特征
-
算法:求解問題的方法和步驟(一系列有限的運算規則 or 若干條指令組成的有窮序列)
-
算法的特征:
- 有窮性:算法執行必須在有限步結束
- 確定性:算法的每一個步驟都必須是確定的、獨一無二的
- 輸入:算法有0個或多個輸入
- 輸出:算法一定有輸出結果
- 可行性:算法中的運算必須是可以實現的
-
程序:用計算機語言表達的求解一個問題的一系列指令的序列
-
算法和程序的區別:算法具有有窮性;程序不需要具有有窮性
3.2 算法的時間復雜度和空間復雜度
- 算法的時間復雜度:算法執行過程中他的基本操作的執行次數
- 注:評價算法的時間復雜度時,不考慮兩算法執行次數之間的細小區別,而只關心算法的本質區別
- 常見算法的復雜度:1、\(log_2n\)、n、\(nlog_2n\)、\(n^2\)、\(n^3\)、\(2^n\)
- 算法的最好情況:算法計量值的最小值
- 算法的最壞情況:算法計量值的最大值
- 算法的平均情況:算法在所有可能情況下的計算量的加權平均值
- 算法的空間復雜度:除了存儲數據本身以外的附加存儲空間
、