數(shù)據(jù)結(jié)構(gòu)與算法
◆算法的基本概念
1. 算法:是對問題處理方案的正確而完整的描述,是求解問題的方法,是指令的有效序列。
2. 具有5個特性:
(1) 有窮性(在有窮步后完成)算法程序的運(yùn)行時間是有限的
(2) 確定性(每一步都有確定的含義)
(3) 可行性
(4) 輸入(一個算法有零個或多個輸入)
(5) 輸出(一個算法有一個或多個輸出)
3. 算法的復(fù)雜度
包括:時間復(fù)雜度和空間復(fù)雜度。 二者沒有必然的聯(lián)系。
時間復(fù)雜度:執(zhí)行算法所需要的計算工作量或基本運(yùn)算次數(shù)。
空間復(fù)雜度:算法所需要的空間的度量。
◆數(shù)據(jù)結(jié)構(gòu)的定義
1. 數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)、數(shù)據(jù)的操作
數(shù)據(jù)的邏輯結(jié)構(gòu):數(shù)據(jù)的外部結(jié)構(gòu),指各數(shù)據(jù)元素之間的邏輯關(guān)系,反映人們對數(shù)據(jù)含義的解釋。 包括:線性結(jié)構(gòu)(線性表、棧、隊(duì)列)和非線性結(jié)構(gòu)(樹和圖)
數(shù)據(jù)的存儲結(jié)構(gòu):數(shù)據(jù)的物理結(jié)構(gòu),指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示。
一個邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)。
◆ 線性表:線性表中元素的個數(shù)n(n>=0)定義為線性表的長度。
順序存儲是線性表的一種最常用的存儲方式。
線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)分別是隨機(jī)存取的存儲結(jié)構(gòu)和順序存取的存儲結(jié)構(gòu)。
1.棧:是限定在表尾進(jìn)行插入和刪除操作的線性表。 具有記憶功能 只能順序存儲(錯)
允許插入和刪除的一端叫棧頂。另一端叫棧底。
后進(jìn)先出的線性表
2隊(duì)列:是限定在一端插入而在另一端刪除,插入端叫隊(duì)尾,刪除端叫對頭。
先進(jìn)先出的線性表
3棧和隊(duì)列的順序存儲結(jié)構(gòu)
循環(huán)隊(duì)列屬于線性表存儲結(jié)構(gòu)中順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)的前者。
◆ 樹
1.定義:樹的結(jié)點(diǎn)、度(結(jié)點(diǎn)的度)、葉子(終端結(jié)點(diǎn))、數(shù)的度、深度、有序樹和無序數(shù)
2.二叉樹:結(jié)點(diǎn)至多有兩棵子樹,并且二叉樹的子樹有之分,次序不能顛倒。
性質(zhì):★在二叉樹的第i層上至多有2i-1個結(jié)點(diǎn)
★ 深度為k的二叉樹至多有2k-1個結(jié)點(diǎn)。
★ 對任一個二叉樹T,如果其葉子(終端結(jié)點(diǎn)數(shù))為n,度為二的結(jié)點(diǎn)數(shù)為m,則n=m+1.
★ 具有n個結(jié)點(diǎn)的完全二叉樹的深度為k+1,其中k是㏒2n的整數(shù)部分。
2. 二叉樹的遍歷
▼先序遍歷(根—左—右)
▼中序遍歷(左—根—右)
▼后序遍歷(左—右—根)
◆查找算法
(1)順序查找
順序查找的平均查找長度為(n+1)/2,最壞的情況下比較的次數(shù)為n
(2) 二分查找
限定于順序存儲的有序線性表
◆排序算法
(1)插入類排序
▲直接插入排序
▲折半插入排序
▲希爾排序
(2)交換類排序
▲冒泡排序 最壞情況下的比較次數(shù)n(n-1)/2
▲快速排序 最壞情況下的比較次數(shù)n(n-1)/2
(3)選擇類排序
例題精選:
1. 設(shè)一棵完全二叉樹共有699個結(jié)點(diǎn),則在該二叉樹中的葉子結(jié)點(diǎn)數(shù)為:350
2. 已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列為:cedba
3. 要求內(nèi)存量最大的是:歸并排序
4. 在數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的是:邏輯結(jié)構(gòu)
5. 棧底至棧頂依次存放元素A.B.C.D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是:DCBEA
6. 已知數(shù)據(jù)表A 中每個元素距其最終位置不遠(yuǎn),為節(jié)省時間,應(yīng)采取的算法是:直接插入排序
7. 用鏈?zhǔn)奖硎揪性表的優(yōu)點(diǎn)是:便于插入和刪除操作。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |