資料結構基礎筆記(2)

2021-10-09 02:38:20 字數 2850 閱讀 4514

1.定義:乙個函式自己直接或間接呼叫自己

2.舉例 :1)1+2+....+100

2)求階乘

3)漢諾塔

4)走迷宮

3.遞迴滿足的三個條件

1)遞迴必須有乙個明確的終止條件 

2)該函式所處理的資料規模必須在遞減 (值可以是遞增的)

3)這個轉化必須是可解的  (把已知的經典遞迴記住)

4.迴圈和遞迴

遞迴:易於理解 ,但速度慢,儲存空間大 (不斷分配空間儲存,反覆呼叫函式)

迴圈:不易理解,但速度快,儲存空間小

5.遞迴的應用樹和森林就是以遞迴的方式定義的

樹和圖的很多演算法都是以遞迴來實現的

很多數學公式就是以遞迴的方式定義的 (斐波拉契數列)

1.定義:一種可以實現「先進後出」的儲存結構   《棧類似於箱子》

2.分類:靜態棧

動態棧3.演算法:出棧、壓棧

4.應用:函式呼叫

中斷表示式求值

記憶體分配

緩衝處理迷宮

1.定義:一種可以實現「先進先出」的儲存結構  《類似於排隊買票》

2.分類:鏈式佇列--用鍊錶實現

靜態佇列--用陣列實現 (靜態佇列通常都必須是迴圈佇列)

3.靜態佇列為什麼必須是迴圈佇列?

4.迴圈佇列需要幾個引數來確定? 需要2個引數來確定  front  rear

2個引數不同場合有不同的含義

建議初學者先記住,然後慢慢體會:

1)佇列初始化  front和rear的值都是零

2)佇列非空   front代表的是佇列的第乙個元素,rear代表的是佇列的最後乙個有效元素的下乙個元素

3)佇列空  front和rear的值相等,但是不一定為零

5.迴圈隊列入隊偽演算法的講解

1)將值存入rear所代表的位置

2)錯誤的寫法:r=r+1;    正確的寫法:r=(r+1)%陣列的長度

6.迴圈佇列出隊偽演算法的講解

1)出隊的值儲存起來(可選步驟)

2)f=(f+1)%陣列的長度

*如何判斷迴圈佇列是否為空  如果front和rear的值相等,則一定為空

*如何判斷迴圈佇列是否已滿 (front的值可能比rear大、小、相等)

1)多增加乙個標誌引數

2)少用乙個元素【通常使用第二種方式】

如果r和f的值緊挨著,則佇列已滿。

if((r+1)%陣列的長度==f)

已滿else  未滿

7.演算法:入隊,出隊

8.佇列應用:所有和時間有關的操作都有佇列的影子

1.排序演算法的穩定性只是演算法的性質,並不能衡量乙個演算法的優劣。

穩定性--若待排序的兩個元素,在使用排序演算法後,該兩元素的先後位置為發生改變,則是穩定的。

2.內部排序--在排序期間元素全部存放在記憶體中

外部排序--排序期間元素無法全部同時存放在記憶體中,必須在排序過程中根據要求不斷地在內外存之間進行移動。

3.時空複雜度決定內部排序演算法的效能

4.插入排序--每次將乙個待排序的序列插入到乙個前面已經排好序的子串行當中

1)直接插入:插入--後移 

2)折半插入:折半查詢o(log2n)+移動o(n) 

3)希爾排序:縮小增量排序【讓序列逐步變成有序序列,然後對其進行插入排序】

基本思想:

先將排序表分割成d個形如i,i+d,i+2d...的特殊子表,分別進行直接插入排序,當整個表中的元素已經呈現基本有序時,再對全體記錄進行一次直接插入排序。

5.交換排序

4)氣泡排序:兩兩比較交換值 

5)快速排序:選取乙個元素作為基準,一趟排序劃分兩部分   遞迴

6.選擇排序--選取最小元素

6)直接選擇排序

7)堆排序(見下圖)

對於小根堆而言,內節點關鍵字小於分支結點;

對於大根堆而言,內節點關鍵字大於分支結點。

(大根堆)a》若孩子結點均小於雙親結點,則該結點調整結束;

b》若存在孩子結點大於雙親結點,則將最大的孩子結點與雙親結點交換,並對該孩子結點進行上述操作,直到出現a或者葉節點為止 

7.8)歸併排序--歸併操作

8.基數排序--不基於比較

9.外部排序--採用歸併排序方法

資料結構筆記(2)

資料結構筆記 2 類物件的定義 類是現實世界或思維世界中的實體在計算機中的反映,它將資料以及這些資料上的操作封裝在一起。物件是具有類型別的變數。類和物件是物件導向程式設計技術中的最基本的概念。1 類物件的關係 類是物件的抽象,而物件是類的具體例項。類是抽象的,不占用記憶體,而物件是具體的,占用儲存空...

資料結構筆記2

include include include using namespace std typedef struct sqlist typedef struct lnode lnode,linklist 有序順序表的合併 void combainshunxubiao sqlist a,sqlist ...

資料結構筆記 基礎

一 資料的邏輯結構 1 線性結構的特點是元素之間是一對一的關係,比如鍊錶 陣列 佇列 棧等等這些都是線性結構。2 非線性結構的特點是元素之間可以是任意關係除了一對一,比如集合 無關係 樹 一對多 圖 多對多 二 資料的物理結構 1 順序儲存 元素在記憶體中連續儲存。優點是儲存空間小,缺點是只能使用相...