數(shù)據(jù)結(jié)構(gòu)第一章緒論

1、數(shù)據(jù)結(jié)構(gòu)=邏輯結(jié)構(gòu)+存儲結(jié)構(gòu)+操作?

2、數(shù)據(jù)的基本單位:數(shù)據(jù)元素

3、數(shù)據(jù)元素的最小單位:數(shù)據(jù)項(xiàng)

4、在數(shù)據(jù)庫中:數(shù)據(jù)元素為行,數(shù)據(jù)項(xiàng)為列(簡稱行為元素,列為項(xiàng))

5、數(shù)據(jù)元素的集合稱為:數(shù)據(jù)對象

6、數(shù)據(jù)類型是 (3種):原子類型、結(jié)構(gòu)類型、抽象數(shù)據(jù)類型

7、抽象數(shù)據(jù)類型包含:數(shù)據(jù)對象、數(shù)據(jù)對象上的關(guān)系集合、以及數(shù)據(jù)對象的基本操作

抽象數(shù)據(jù)類型與已有的數(shù)據(jù)類型(如float、int)有什么區(qū)別? ?? 二者無區(qū)別,只是float、int是已實(shí)現(xiàn)的類型

定義格式:ADT抽象數(shù)據(jù)類型名{

數(shù)據(jù)對象的定義:

數(shù)據(jù)關(guān)系的定義:

基本操作的定義:}

8、邏輯結(jié)構(gòu)是(4種2大類)

? ?? 2大類:線性和非線性結(jié)構(gòu)

? ?? 分為4種:線性結(jié)構(gòu)、集合、樹、圖

9、存儲結(jié)構(gòu)是(4種)優(yōu)缺點(diǎn)有哪些:順序存儲、鏈?zhǔn)酱鎯?、索引存儲、散列存?/p>

10、如何解決一個問題:先畫關(guān)系而后選存儲方式

11、棧是限制了插入刪除點(diǎn)的線性表,只是邏輯結(jié)構(gòu),與存儲結(jié)構(gòu)無關(guān)

12、舉例說明,相同的邏輯結(jié)構(gòu),不同的存儲方式在相同的操作下,其運(yùn)算效率不同

線性表的順序存儲和鏈?zhǔn)酱鎯Γ翰迦耄瑒h除操作

13、如何定義一個結(jié)構(gòu)是邏輯結(jié)構(gòu)還是物理結(jié)構(gòu)

當(dāng)一個結(jié)構(gòu),如數(shù)組、鏈表、樹、圖,在邏輯結(jié)構(gòu)中只有一種定義,而在物理結(jié)構(gòu)中卻有兩種選擇,那么這個結(jié)構(gòu)就屬于邏輯結(jié)構(gòu);

相反,當(dāng)此結(jié)構(gòu)在原有基礎(chǔ)上加上了某種限定,使得其在物理結(jié)構(gòu)中只有一種定義,那么這個結(jié)構(gòu)就屬于物理(存儲)結(jié)構(gòu);

14、如何判斷數(shù)據(jù)結(jié)構(gòu)不同:

看如何定義,如果是名字不同:比如棧和隊(duì)列,邏輯結(jié)構(gòu)都是線性表,存儲結(jié)構(gòu)都可以是順序或者鏈表

如果是分類不同:比如線性表和二叉樹,邏輯結(jié)構(gòu)不同,但是都可以順序或者鏈?zhǔn)酱鎯?/p>

15、數(shù)據(jù)結(jié)構(gòu)的操作:

(1)建立數(shù)據(jù)結(jié)構(gòu);(2)清除數(shù)據(jù)結(jié)構(gòu);(3)插入數(shù)據(jù)元素;(4)刪除數(shù)據(jù)元素;(5)更新數(shù)據(jù)元素;

(6)查找數(shù)據(jù)元素;(7)按序重新排列;(8)判定某個數(shù)據(jù)結(jié)構(gòu)是否為空,或是否已達(dá)到最大允許的容量;

(9)統(tǒng)計(jì)數(shù)據(jù)元素的個數(shù)。

16、算法的基本概念(4個):有窮性、確定性、可行性、輸入/輸出

17、算法的設(shè)計(jì)要求(4個):正確性、可讀性、健壯性、效率與低存儲量需求

18、算法的度量:時間復(fù)雜度和空間復(fù)雜度

19、時間復(fù)雜度的分析方法:大O法和語句頻度法

20、語句的頻度:一個語句在該算法中被重復(fù)執(zhí)行的次數(shù)

21、大O法:它表示隨問題規(guī)模n的增大,算法執(zhí)行時間的增長率和基本運(yùn)算的頻度f(n)的增長率相同,稱作算法的漸進(jìn)時間復(fù)雜度,簡稱時間復(fù)雜度

22、語句頻度法:計(jì)算該語句重復(fù)執(zhí)行的次數(shù)

23、時間復(fù)雜度的定義:(不僅依賴于問題規(guī)模,還依賴于待輸入的數(shù)據(jù)性質(zhì))

24、分析程序的時間復(fù)雜性是有兩條原則:

加法規(guī)則:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

乘法規(guī)則:T(n)=T1(n)+T2(n)=O(f(n))xO(g(n))=O(f(n)xg(n))

25、常見的漸近時間復(fù)雜度:對數(shù)函數(shù)<冪函數(shù)<指數(shù)函數(shù)

O(1)<O(\log_2n)<O(n)<O(n\log_2n)<O(n^2)<O(n^3)<O(2^n )<O(n!)<O(n^n)

26、空間復(fù)雜度:即3個組成部分(P<personal>+I/O+add)

存放本身所用的指令和常數(shù)、輸入輸出占用的空間、信息的輔助空間

27、算法原地工作:是指算法所需輔助空間為常量,記作O(1)

28、時間復(fù)雜度計(jì)算方法:

1、循環(huán)主體中的變量參與循環(huán)條件的判斷

找出主體語句中與T(n)成正比的循環(huán)變量,將其帶入條件中進(jìn)行計(jì)算

2、循環(huán)主體中的變量與循環(huán)條件無關(guān)

遞歸程序:使用公式進(jìn)行遞推(數(shù)學(xué)歸納法或直接累計(jì)循環(huán)次數(shù))

非遞歸程序:直接累計(jì)次數(shù)

遞歸:是直接或者間接調(diào)用自身的函數(shù),當(dāng)操作有某種重復(fù)模式的數(shù)據(jù)結(jié)構(gòu)和問題時十分有效。

29、遞歸的例子

1、 1到n求和: s(n) = n + s(n-1)

2、 n的階乘: f(n) = n * f(n-1)

3、 快速排序: quicksort(a,low,high) => ?quicksort(a,low,pivot-1) ⊙ quicksort(a,pivot+1, high)

4、 樹的前序、中序、后續(xù)遍歷: preorder(T) = > ?read(T->data) preorder(T->leftChild) preorder(T->rightChild)

參考來自:遞歸程序的含義、實(shí)現(xiàn)機(jī)制以及復(fù)雜度計(jì)算 - 蒼穹逸影 - 博客園

30、王道拓展題:斐波那契數(shù)列算法的時間復(fù)雜度

斐波那契數(shù)列的定義:F(n+1)=F(n)+F(n-1)

遞歸:O(2^n)

非遞歸:O(n)

參考來自:斐波那契數(shù)列兩種算法的時間復(fù)雜度 - 在下雨的Tokyo - 梳理:博客園

全文知識點(diǎn)梳理參考:王道考研數(shù)據(jù)結(jié)構(gòu)參考書、趙海英數(shù)據(jù)結(jié)構(gòu)輔導(dǎo)視頻

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

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