考研數據結構————第一章:緒論

開始複習2021的考研數據結構了!!!沖沖衝

第1章 緒論

【考綱的內容】
(一)數據結構相關的概念和術語
(二)數據結構的三要素:邏輯結構、物理結構和數據運算
(三)算法時間複雜度和空間複雜度的分析與計算
【知識框架】
在這裏插入圖片描述

1.1 數據結構的基本概念

1.1.1 基本概念和術語

1.數據:數據是信息的載體,是描述客觀事物屬性的數、字符及所有能輸入到計算機中並被計算機程序識別和處理的符號的集合。數據是計算機程序加工的原料。
2.數據元素:數據元素是數據的基本單位,通常組我誒一個整體進行考慮和處理。一個數據元素可由若干數據項組成,數據項是構成數據元素的不可分割的最小單位。
3.數據對象:是具有相同性質的數據元素的集合,是數據的一個子集。
4.數據類型:數據類型是一個值的集合和定義在此集合上的一組操作的總稱。
    1)原子類型:值不可再分的數據類型。
    2)結構類型:值可以再分解爲若干成分(分量)的數據類型。
    3)抽象數據類型:抽象數據組織及與之相關的操作。
5.數據結構:
	相互之間存在的一種或者多種特定關係的數據元素的集合。數據元素之間的關係稱之爲結構。數據結構包括三方面內容:邏輯結構、存儲結構和數據的運算。
·	數據的邏輯結構和存儲結構是密不可分的兩個方面,一個算法的設計取決於所選定的邏輯結構,而算法的實現依賴於所採用的存儲結構。

1.1.2 數據結構的三要素

1.數據的邏輯結構
邏輯結構是指數據元素之間的邏輯關係,即從邏輯關係上描述數據。它與數據的存儲無關,獨立於計算機。數據的邏輯結構分類如圖:

在這裏插入圖片描述
集合:結構中的數據元素之間除“同一個集合”外,沒有其他的關係。
線性結構:結構中的數據元素之間只存在一對一的關係。
樹形結構:結構中的數據元素之間存在一對多的關係。
圖狀結構或網狀結構:結構中的數據元素之間存在多對多的關係

2.數據的存儲結構
存儲結構是指數據結構在計算機中的表示(又稱映像),也稱物理結構。他包括數據元素的表示和關係的表示。數據的存儲結構是用計算機語言實現的邏輯結構,依賴於計算機語言。數據的存儲結構主要有順序存儲、鏈式存儲、索引存儲和散列存儲。
    1)順序結構:把邏輯上相鄰的元素存儲在物理位置上也相鄰的存儲單元中。元素之間的關係由存儲單元的鄰接關係來體現。優點:可以實現隨時存	取,每個元素佔用最少的存儲空間。缺點:只能使用相鄰的一整塊存儲單元,因此可能產生較多的外部碎片。
    2)鏈式存儲:不要求邏輯上相鄰的元素在物理位置上也相鄰,藉助指示元素存儲地址的指針來表示元素之間的邏輯關係。優點:不會出現碎片現	象,能充分利用存儲單元。缺點:每個元素因存儲指針而佔用額外的存儲空間,且只能實現順序存取。
    3)索引存儲:在存儲元素信息的同時,還建立附加的索引表。索引表中的每項稱爲索引項,索引項的一般形式是(關鍵字、地址)。優點:檢索速	度快。缺點:附加的索引表佔用額外的存儲空間。增加和刪除數據時也要修改索引表,因此會花費很多時間。
    4)散列存儲:根據元素的關鍵字直接計算出該元素的存儲地址,又稱哈希hash存儲。優點:檢索以及增加和刪除都很快。缺點:如果散列函數不好,可能出現元素存儲單元的衝突,解決衝突會增加時間和空間開銷。
3.數據的運算:施加在數據上的運算包括運算的定義和實現。運算的定義是針對邏輯結構的,指出運算的功能。運算的實現是針對存儲結構的,指出運算的具體操作步驟。

1.2 算法和算法評價

1.2.1 算法的基本概念

算法(Algorithm)是針對特定問題求解步驟的一種描述,他是指令的有序序列,其中的每條指令表示一個或多個操作。此外,一個算法還具有下列的五個重要特性:
	1)有窮性:一個算法必須總在執行有窮步之後結束,且每一步都可在有窮時間內完成。
	2)確定性:算法中每條指令必須有確切的含義,對應相同的輸入只能得出相同的輸出。
	3)可行性:算法中描述的操作都可以通過已經實現的基本運算執行有限次來實現。
	4)輸入:一個算法有零個或者多個輸入,這些輸入取自於每個特性的對象的結合。
	5)輸出:一個算法有零個或者多個輸出,這些輸出是與輸入有着某種特定關係的量。 
通常,設計一個好的算法應考慮到以下的目標:
	正確性、可讀性、健壯性、效率與低存儲量需求。

1.2.2 算法效率的度量

算法效率的度量是通過時間複雜度和空間複雜度來描述的。
1.時間複雜度:
在計算機科學中,時間複雜性,又稱時間複雜度,算法的時間複雜度是一個函數,它定性描述該算法的運行時間。這是一個代表算法輸入值的字符串的長度的函數。時間複雜度常用大O符號表述,不包括這個函數的低階項和首項係數。使用這種方式時,時間複雜度可被稱爲是漸近的,亦即考察輸入值大小趨近無窮時的情況。算法的時間複雜度記爲:T(n)=O(f(n))
式中,O的含義是T(n)的數量級。
a)加法規則:
	T(n,m) = T1(n) + T2(n) = O (max ( f(n),g(m) )
b)乘法規則:
	T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))
常見的漸近時間複雜度:
O(c)< O(log2n)< O(n)<O(n*log2n)< O(n2)< O(n3)< O(2n)<O(3n)<O(n!) 
2.空間複雜度:
空間複雜度(Space Complexity)是對一個算法在運行過程中臨時佔用存儲空間大小的量度,記做S(n)=O(f(n))。比如直接插入排序的時間複雜度是O(n^2),空間複雜度是O(1) 。而一般的遞歸算法就要有O(n)的空間複雜度了,因爲每次遞歸都要存儲返回信息。一個算法的優劣主要從算法的執行時間和所需要佔用的存儲空間兩個方面衡量。
算法原地工作是指算法所需的輔助空間爲常亮,即O(1)。

法的優劣主要從算法的執行時間和所需要佔用的存儲空間兩個方面衡量。
算法原地工作是指算法所需的輔助空間爲常亮,即O(1)。

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