1.1 數據結構的基本概念
1.1.1 基本概念和術語
-
數據:數據是信息的載體,是描述客觀事物屬性的數、字符以及所有能輸入到計算機中並被計算機識別和處理的符號的集合。
-
數據元素:數據元素是數據的基本單位,通常作爲一個整體進行考慮和處理。
一個數據元素由若干數據項組成。eg:
學生記錄就是一個數據元素,它 由學號、姓名、性別等數據項組成。 -
數據結構:數據結構是相互之間存在一種或多種特定關係的數據元素的集合。
數據對象:數據對象是具有相同性質的數據元素的集合,是數據的一個子集。
-
數據類型:數據類型是一個值的集合和定義在此集合上的一組操作的總稱。
(1) 原子類型。其值不可再分的數據類型。
(2) 結構類型。其值可以再分解爲若干成分(分量)的數據類型。
eg:
抽象數據類型:是抽象數據組織及與之相關的操作。
1.1.2 數據結構三要素
1. 數據的邏輯結構 —— 數據元素之間的邏輯關係
2. 數據的存儲結構 —— 各個數據元素在內存中如何存儲
如何用計算機表示數據元素的邏輯關係?
順序存儲。把邏輯上相鄰的元素存儲在物理位置上也相鄰的存儲單元中,元素之間的關係由存儲單元的鄰接關係來體現。
鏈式存儲。邏輯上相鄰的元素在物理位置上可以不相鄰,藉助指示元素存儲地址的指針來表示元素之間的邏輯關係。
索引存儲。在存儲元素信息的同時,還建立附加的索引表。索引表中的每項稱爲索引項,索引項的一般形式是(關鍵字,地址)。
散列存儲。根據元素的關鍵字直接計算出該元素的存儲地址,又稱哈希(Hash) 存儲。
3. 數據的運算 —— 施加在數據上的運算包括運算的定義和實現
運算的定義是針對邏輯結構的,指出運算的功能;運算的實現是針對存儲結構的,指出運算的具體操作步驟。
1.1.3 小結
在探討一種數據結構時,
①定義邏輯結構(數據元素之間的關係)
②定義數據的運算(針對現實需求,應該對這種邏輯結構進行什麼樣的運算)
③確定某種存儲結構,實現數據結構,並實現一些對數據結構的基本運算
1.2 算法和算法評價
1.2.1 算法的基本概念
1.2.2 算法效率的度量
1. 時間複雜度
(1) 常見的漸進時間複雜度
(2) 兩個規則
(3) 最壞時間複雜度
(4)結論
結論1:順序執行的代碼只會影響常數項,可以忽略
結論2:只需挑循環中的一個基本操作分析它的執行次數與n的關係即可
結論3:如果有多層嵌套循環,只需關注最深層循環循環了幾次
eg1:
eg2:
(5)小結
2. 空間複雜度
考研中考察很少。
(1)計算S(n)時只需關注與問題規模相關的變量
(2)遞歸程序的時間複雜度
(3)小結