數(shù)據(jù)結構(一)--基礎概念

一、數(shù)據(jù)結構概念

1. 數(shù)據(jù)類型

(1)原子類型:其值不可再分的數(shù)據(jù)類型。

(2)結構類型:其值可以再分解成若干成分的數(shù)據(jù)類型。

(3)抽象數(shù)據(jù)類型:一個數(shù)學模型及定義在該數(shù)據(jù)模型上的一組操作。

2. 數(shù)據(jù)結構

數(shù)據(jù)結構是一組或多組存在特定關系的數(shù)據(jù)元素的集合。

(1)數(shù)據(jù)的邏輯結構

數(shù)據(jù)的邏輯結構分為線性結構和非線性結構。

集合:結構中的數(shù)據(jù)元素除了同屬一個集合外,沒有任何關系。

線性結構:結構中的數(shù)據(jù)元素只存在一對一的關系。

樹形結構:結構中的數(shù)據(jù)元素存在一對多的關系。

網(wǎng)狀結構:結構中的數(shù)據(jù)元素存在多對多的關系。

image.png

(2)數(shù)據(jù)的存儲結構

存儲結構是指數(shù)據(jù)結構在計算機中的表示(映像、物理結構),包括數(shù)據(jù)元素的表示和關系的表示。

順序存儲:把邏輯上相鄰的元素放在物理位置也相鄰的存儲單元中,元素的關系可以由存儲單元的鄰接關系來體現(xiàn),如數(shù)組。

優(yōu)點:可以通過索引直接訪問任何位置的元素,不需要從頭遍歷,且每個元素占用最少的存儲空間,不會有指針或鏈接信息占用額外空間。

缺點:只能使用相鄰的一整塊空間,會產(chǎn)生外部碎片。

鏈式存儲:存儲元素時借助指示元素位置的指針來表示元素之間的邏輯關系,不需要存儲單元物理位置相鄰,如List。

優(yōu)點:充分利用所有存儲單元,不會出現(xiàn)碎片。

缺點:每個元素存儲指針占用額外空間,且必須順序存取。

索引存儲:在存儲元素時附加索引表,索引項形式為 [關鍵字,地址],常用于數(shù)據(jù)庫或文件系統(tǒng)。

優(yōu)點:檢索速度快。

缺點:索引表占用額外空間,增刪數(shù)據(jù)需要額外花時間修改索引表。

散列存儲:根據(jù)元素的關鍵詞找出元素的存儲地址(哈希存儲),如哈希表。

優(yōu)點:增刪查操作快。

缺點:哈希表占用額外的空間,有可能需要花時間處理哈希沖突。

二、算法

1. 算法特征

(1)有窮性:算法總在執(zhí)行有窮步之后結束,每一步都在有窮時間內(nèi)完成。

(2)確定性:算法每條指令有確切的含義,對于相同的輸入只能得出相同的輸出。

(3)可行性:算法中描述的操作都可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次實現(xiàn)。

(4)輸入:算法有零個或多個輸入。

(5)輸出:算法有零個或多個輸出。

2. 算法效率的度量

(1)時間復雜度:算法中基本運算的執(zhí)行次數(shù)的數(shù)量級作為該算法的時間復雜度。

時間復雜度表示算法執(zhí)行所需的時間,它描述了算法的運行時間與輸入數(shù)據(jù)規(guī)模之間的關系。時間復雜度通常用大O表示法(Big O notation)來表示,形式為O(f(n)),其中f(n)是輸入數(shù)據(jù)規(guī)模n的函數(shù)。

常見的時間復雜度:
O(1):常數(shù)時間復雜度,表示算法的執(zhí)行時間與輸入數(shù)據(jù)規(guī)模無關。
O(n):線性時間復雜度,表示算法的執(zhí)行時間與輸入數(shù)據(jù)規(guī)模成正比。
O(n^2):平方時間復雜度,表示算法的執(zhí)行時間與輸入數(shù)據(jù)規(guī)模的平方成正比。
O(log n):對數(shù)時間復雜度,表示算法的執(zhí)行時間與輸入數(shù)據(jù)規(guī)模的對數(shù)成正比。
O(n log n):線性對數(shù)時間復雜度,表示算法的執(zhí)行時間與輸入數(shù)據(jù)規(guī)模乘以其對數(shù)成正比。

image.png

(2)空間復雜度:該算法所需的存儲空間。

空間復雜度表示算法執(zhí)行所需的內(nèi)存空間,它描述了算法的存儲空間與輸入數(shù)據(jù)規(guī)模之間的關系??臻g復雜度也通常用大O表示法來表示,形式為O(f(n)),其中f(n)是輸入數(shù)據(jù)規(guī)模n的函數(shù)。

常見的空間復雜度:
O(1):常數(shù)空間復雜度,表示算法的存儲空間與輸入數(shù)據(jù)規(guī)模無關。
O(n):線性空間復雜度,表示算法的存儲空間與輸入數(shù)據(jù)規(guī)模成正比。
O(n^2):平方空間復雜度,表示算法的存儲空間與輸入數(shù)據(jù)規(guī)模的平方成正比

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容