- 相關(guān)推薦
計(jì)算機(jī)二級(jí)Office高級(jí)應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法
NCRE采用全國(guó)統(tǒng)一命題,統(tǒng)一考試的形式。報(bào)考二級(jí)6個(gè)科目考試的新生,全部采用無(wú)紙化考試(即全部上機(jī)考試),取代傳統(tǒng)的考試模式(筆試加上機(jī))。下面是小編整理的關(guān)于計(jì)算機(jī)二級(jí)Office高級(jí)應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法,希望大家認(rèn)真閱讀!
第一部分 公共基礎(chǔ)知識(shí)
第1章 數(shù)據(jù)結(jié)構(gòu)與算法
1.1算法
1.算法的基本概念
(1)概念:算法是指一系列解決問(wèn)題的清晰指令。
(2)4個(gè)基本特征:可行性、確定性、有窮性、擁有足夠的情報(bào)。
(3)兩種基本要素:對(duì)數(shù)據(jù)對(duì)象的運(yùn)算和操作、算法的控制結(jié)構(gòu)(運(yùn)算和操作時(shí)問(wèn)的順序)。
(4)設(shè)計(jì)的基本方法:列舉法、歸納法、遞推法、遞歸法、減半遞推技術(shù)和回溯法。
2.算法的復(fù)雜度
(1)算法的時(shí)間復(fù)雜度:執(zhí)行算法所需要的計(jì)算工作量。
(2)算法的空間復(fù)雜度:執(zhí)行算法所需的內(nèi)存空間。
1.2數(shù)據(jù)結(jié)構(gòu)的基本概念
數(shù)據(jù)結(jié)構(gòu)指相互有關(guān)聯(lián)的數(shù)據(jù)元素的集合,即數(shù)據(jù)的組織形式。其中邏輯結(jié)構(gòu)反映數(shù)據(jù)元素之間邏輯關(guān)系;存儲(chǔ)結(jié)構(gòu)為數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式,有順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)、索引存儲(chǔ)和散列存儲(chǔ)4種方式。
數(shù)據(jù)結(jié)構(gòu)按各元素之間前后件關(guān)系的復(fù)雜度可劃分為:
(1)線性結(jié)構(gòu):有且只有一個(gè)根節(jié)點(diǎn),且每個(gè)節(jié)點(diǎn)最多有一個(gè)直接前驅(qū)和一個(gè)直接后繼的非空數(shù)據(jù)結(jié)構(gòu)。
(2)非線性結(jié)構(gòu):不滿足線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。
1.3線性表及其順序存儲(chǔ)結(jié)構(gòu)
1.線性表的基本概念
線性結(jié)構(gòu)又稱線性表,線性表是最簡(jiǎn)單也是最常用的一種數(shù)據(jù)結(jié)構(gòu)。
2.線性表的順序存儲(chǔ)結(jié)構(gòu)
元素所占的存儲(chǔ)空間必須連續(xù)。
元素在存儲(chǔ)空間的位置是按邏輯順序存放的。
3.線性表的插入運(yùn)算
在第i個(gè)元素之前插入一個(gè)新元素的步驟如下:
步驟一:把原來(lái)第n個(gè)節(jié)點(diǎn)至第i個(gè)節(jié)點(diǎn)依次往后移一個(gè)元素位置。
步驟二:把新節(jié)點(diǎn)放在第i個(gè)位置上。
步驟三:修正線性表的節(jié)點(diǎn)個(gè)數(shù)。
在最壞情況下,即插入元素在第一個(gè)位置,線性表中所有元素均需要移動(dòng)。
4.線性表的刪除運(yùn)算
刪除第i個(gè)位置的元素的步驟如下:
步驟一:把第i個(gè)元素之后不包括第i個(gè)元素的n-i個(gè)元素依次前移一個(gè)位置;
步驟二:修正線性表的結(jié)點(diǎn)個(gè)數(shù)。
1.4棧和隊(duì)列
1.棧及其基本運(yùn)算
(1)基本概念:棧是一種特殊的線性表,其插入運(yùn)算與刪除運(yùn)算都只在線性表的一端進(jìn)行,也被稱為“先進(jìn)后出”表或“后進(jìn)先出”表。
棧頂:允許插入與刪除的一端。
棧底:棧頂?shù)牧硪欢恕?/p>
空棧:棧中沒(méi)有元素的棧。
(2)特點(diǎn)。
棧頂元素是最后插入和最早被刪除的元素。
棧底元素是最早插入和最后被刪除的元素。
棧有記憶作用。
在順序存儲(chǔ)結(jié)構(gòu)下,棧的插入和刪除運(yùn)算不需移動(dòng)表中其他數(shù)據(jù)元素。
棧頂指針top動(dòng)態(tài)反映了棧中元素的變化情況
(3)順序存儲(chǔ)和運(yùn)算:入棧運(yùn)算、退棧運(yùn)算和讀棧頂運(yùn)算。
2.隊(duì)列及其基本運(yùn)算
(1)基本概念:隊(duì)列是指允許在一端進(jìn)行插入,在另一端進(jìn)行刪除的線性表,又稱“先進(jìn)先出”的線性表。
隊(duì)尾:允許插入的一端,用尾指針指向隊(duì)尾元素。
排頭:允許刪除的一端,用頭指針指向頭元素的前一位置。
(2)循環(huán)隊(duì)列及其運(yùn)算。
所謂循環(huán)隊(duì)列,就是將隊(duì)列存儲(chǔ)空間的最后一個(gè)位置繞到第一個(gè)位置,形成邏輯上的環(huán)狀空間。
入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。
當(dāng)循環(huán)隊(duì)列非空(s=1)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說(shuō)明循環(huán)隊(duì)列已滿,不能進(jìn)行人隊(duì)運(yùn)算,這種情況稱為“上溢”。
退隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)頭位置退出一個(gè)元素并賦給指定的變量。首先將隊(duì)頭指針進(jìn)一,然后將排頭指針指向的元素賦給指定的變量。當(dāng)循環(huán)隊(duì)列為空(s=0)時(shí),不能進(jìn)行退隊(duì)運(yùn)算,這種情況稱為“下溢”。
1.5線性鏈表
在定義的鏈表中,若只含有一個(gè)指針域來(lái)存放下一個(gè)元素地址,稱這樣的鏈表為單鏈表或線性鏈表。
在鏈?zhǔn)酱鎯?chǔ)方式中,要求每個(gè)結(jié)點(diǎn)由兩部分組成:一部分用于存放數(shù)據(jù)元素值,稱為數(shù)據(jù)域;另一部分用于存放指針,稱為指針域。其中指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件)。
1.6樹(shù)和二叉樹(shù)
1.樹(shù)的基本概念
樹(shù)是簡(jiǎn)單的非線性結(jié)構(gòu),樹(shù)中有且僅有一個(gè)沒(méi)有前驅(qū)的節(jié)點(diǎn)稱為“根”,其余節(jié)點(diǎn)分成m個(gè)互不相交的有限集合T1,T2,…,T}mm,每個(gè)集合又是一棵樹(shù),稱T1,T2,…,T}mm為根結(jié)點(diǎn)的子樹(shù)。
父節(jié)點(diǎn):每一個(gè)節(jié)點(diǎn)只有一個(gè)前件,無(wú)前件的節(jié)點(diǎn)只有一個(gè),稱為樹(shù)的根結(jié)點(diǎn)(簡(jiǎn)稱樹(shù)的根)。
子節(jié)點(diǎn):每~個(gè)節(jié)點(diǎn)可以后多個(gè)后件,無(wú)后件的節(jié)點(diǎn)稱為葉子節(jié)點(diǎn)。
樹(shù)的度:所有節(jié)點(diǎn)最大的度。
樹(shù)的深度:樹(shù)的最大層次。
2.二叉樹(shù)的定義及其基本性質(zhì)
(1)二叉樹(shù)的定義:二叉樹(shù)是一種非線性結(jié)構(gòu),是有限的節(jié)點(diǎn)集合,該集合為空(空二叉樹(shù))或由一個(gè)根節(jié)點(diǎn)及兩棵互不相交的左右二叉子樹(shù)組成。可分為滿二叉樹(shù)和完全二叉樹(shù),其中滿二叉樹(shù)一定是完全二叉樹(shù),但完全二叉樹(shù)不一定是滿二叉樹(shù)。二叉樹(shù)具有如下兩個(gè)特點(diǎn):
二叉樹(shù)可為空,空的二叉樹(shù)無(wú)節(jié)點(diǎn),非空二叉樹(shù)有且只有一個(gè)根結(jié)點(diǎn);
每個(gè)節(jié)點(diǎn)最多可有兩棵子樹(shù),稱為左子樹(shù)和右子樹(shù)。
(2)二叉樹(shù)的基本性質(zhì)。
性質(zhì)1:在二叉樹(shù)的第k層上至多有2k-1個(gè)結(jié)點(diǎn)(k≥1)。
性質(zhì)2:深度為m的二叉樹(shù)至多有2m-1個(gè)結(jié)點(diǎn)。
性質(zhì)3:對(duì)任何一棵二叉樹(shù),度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。
性質(zhì)4:具有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)的深度至少為[log2n]+1,其中[log2n]表示log2n的整數(shù)部分。
3.滿二叉樹(shù)與完全二叉樹(shù)
(1)滿二叉樹(shù):滿二叉樹(shù)是指這樣的一種二叉樹(shù):除最后一層外,每一層上的所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)。滿二叉樹(shù)在其第i層上有2i-1個(gè)結(jié)點(diǎn)。
從上面滿二叉樹(shù)定義可知,二叉樹(shù)的每一層上的結(jié)點(diǎn)數(shù)必須都達(dá)到最大,否則就不是滿二叉樹(shù)。深度為m的滿二叉樹(shù)有2m-1個(gè)結(jié)點(diǎn)。
(2)完全二叉樹(shù):完全二叉樹(shù)是指這樣的二叉樹(shù):除最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值;在最后一層上只缺少右邊的若干結(jié)點(diǎn)。
如果—棵具有n個(gè)結(jié)點(diǎn)的深度為k的二叉樹(shù),它的每—個(gè)結(jié)點(diǎn)都與深度為k的滿二叉樹(shù)中編號(hào)為1~n的結(jié)點(diǎn)——對(duì)應(yīng)。
3.二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
二叉樹(shù)通常采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),存儲(chǔ)節(jié)點(diǎn)由數(shù)據(jù)域和指針域(左指針域和右指針域)組成。二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)也稱二叉鏈表,對(duì)滿二叉樹(shù)和完全二叉樹(shù)可按層次進(jìn)行順序存儲(chǔ)。
4.二叉樹(shù)的遍歷
二叉樹(shù)的遍歷是指不重復(fù)地訪問(wèn)二叉樹(shù)中所有節(jié)點(diǎn),主要指非空二叉樹(shù),對(duì)于空二叉樹(shù)則結(jié)束返回。二叉樹(shù)的遍歷包括前序遍歷、中序遍歷和后序遍歷。
(1)前序遍歷。
前序遍歷是指在訪問(wèn)根結(jié)點(diǎn)、遍歷左子樹(shù)與遍歷右子樹(shù)這三者中,首先訪問(wèn)根結(jié)點(diǎn),然后遍歷左子樹(shù),最后遍歷右子樹(shù);并且,在遍歷左右子樹(shù)時(shí),仍然先訪問(wèn)根結(jié)點(diǎn),然后遍歷左子樹(shù),最后遍歷右子樹(shù)。前序遍歷描述為:若二叉樹(shù)為空,則執(zhí)行空操作;否則①訪問(wèn)根結(jié)點(diǎn);②前序遍歷左子樹(shù);③前序遍歷右子樹(shù)。
(2)中序遍歷。
中序遍歷是指在訪問(wèn)根結(jié)點(diǎn)、遍歷左子樹(shù)與遍歷右子樹(shù)這三者中,首先遍歷左子樹(shù),然后訪問(wèn)根結(jié)點(diǎn),最后遍歷右子樹(shù);并且,在遍歷左、右子樹(shù)時(shí),仍然先遍歷左子樹(shù),然后訪問(wèn)根結(jié)點(diǎn),最后遍歷右子樹(shù)。中序遍歷描述為:若二叉樹(shù)為空,則執(zhí)行空操作;否則①中序遍歷左子樹(shù);②訪問(wèn)根結(jié)點(diǎn);③中序遍歷右子樹(shù)。
(3)后序遍歷。
后序遍歷是指在訪問(wèn)根結(jié)點(diǎn)、遍歷左子樹(shù)與遍歷右子樹(shù)這三者中,首先遍歷左子樹(shù),然后遍歷右子樹(shù),最后訪問(wèn)根結(jié)點(diǎn),并且,在遍歷左、右子樹(shù)時(shí),仍然先遍歷左子樹(shù),然后遍歷右子樹(shù),最后訪問(wèn)根結(jié)點(diǎn)。后序遍歷描述為:若二叉樹(shù)為空,則執(zhí)行空操作;否則①后序遍歷左子樹(shù);②后序遍歷右子樹(shù);③訪問(wèn)根結(jié)點(diǎn)。
1.7查找技術(shù)
(1)順序查找:在線性表中查找指定的元素。
(2)最壞情況下,最后一個(gè)元素才是要找的元素,則需要與線性表中所有元素比較,比較次數(shù)為n。
(2)二分查找:二分查找也稱折半查找,它是一種高效率的查找方法。但二分查找有條件限制,它要求表必須用順序存儲(chǔ)結(jié)構(gòu),且表中元素必須按關(guān)鍵字有序(升序或降序均可)排列。對(duì)長(zhǎng)度為n的有序線性表,在最壞情況下,二分查找法只需比較log2n次。
1.8排序技術(shù)
(1)交換類排序法。
冒泡排序:通過(guò)對(duì)待排序序列從后向前或從前向后,依次比較相鄰元素的排序碼,若發(fā)現(xiàn)逆序則交換,使較大的元素逐漸從前部移向后部或較小的元素逐漸從后部移向前部,直到所有元素有序?yàn)橹。在最壞情況下,對(duì)長(zhǎng)度為n的線性表排序,冒泡排序需要比較的次數(shù)為n(n-1)/2。
快速排序:是迄今為止所有內(nèi)排序算法中速度最快的一種。它的基本思想是:任取待排序序列中的某個(gè)元素作為基準(zhǔn)(一般取第一個(gè)元素),通過(guò)一趟排序,將待排元素分為左右兩個(gè)子序列,左子序列元索的排序碼均小于或等于基準(zhǔn)元素的排序碼,右子序列的排序碼則大于基準(zhǔn)元素的排序碼,然后分別對(duì)兩個(gè)子序列繼續(xù)進(jìn)行排序,直至整個(gè)序列有序。最壞情況下,即每次劃分,只得到一個(gè)序列,時(shí)間效率為O(n2)。
(2)插人類排序法。
簡(jiǎn)單插入排序法:把n個(gè)待排序的元素看成為一個(gè)有序表和一個(gè)無(wú)序表,開(kāi)始時(shí)有序表中只包含一個(gè)元素,無(wú)序表中包含有n-1個(gè)元素,排序過(guò)程中每次從無(wú)序表中取出第一個(gè)元素,把它的排序碼依次與有序表元素的排序碼進(jìn)行比較,將它插入到有序表中的適當(dāng)位置,使之成為新的有序表。在最壞情況下,即初始排序序列是逆序的情況下,比較次數(shù)為n(n-1)/2,移動(dòng)次數(shù)為n(n-1)/2。
希爾排序法:先將整個(gè)待排元素序列分割成若干個(gè)子序列(由相隔某個(gè)“增量”的元素組成的)分別進(jìn)行直接插入排序。待整個(gè)序列中的元素基本有序(增量足夠小)時(shí),再對(duì)全體元素進(jìn)行一次直接插入排序。
(3)選擇類排序法。
簡(jiǎn)單選擇排序法:掃描整個(gè)線性表。從中選出最小的元素。將它交換到表的最前面;然后對(duì)剩下的子表采用同樣的方法,直到子表空為止。最壞情況下需要比較n(n-1)/2次。
堆排序的方法:首先將一個(gè)無(wú)序序列建成堆;然后將堆頂元素(序列中的最大項(xiàng))與堆中最后一個(gè)元素交換(最大項(xiàng)應(yīng)該在序列的最后)。不考慮已經(jīng)換到最后的那個(gè)元素,只考慮前n-1個(gè)元素構(gòu)成的子序列,將該子序列調(diào)整為堆。反復(fù)做步驟②,直到剩下的子序列空為止。在最壞情況下,堆排序法需要比較的次數(shù)為0(nlog2n)
【計(jì)算機(jī)二級(jí)Office高級(jí)應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法】相關(guān)文章:
計(jì)算機(jī)二級(jí)office高級(jí)應(yīng)用試題及答案05-27
計(jì)算機(jī)二級(jí)office高級(jí)應(yīng)用模擬試題07-10
計(jì)算機(jī)二級(jí)office高級(jí)應(yīng)用模擬試題10-30
計(jì)算機(jī)二級(jí)考試Office高級(jí)應(yīng)用知識(shí)11-08
計(jì)算機(jī)二級(jí)Office高級(jí)應(yīng)用信息的表示與存儲(chǔ)10-01
計(jì)算機(jī)二級(jí)Office高級(jí)應(yīng)用多媒體技術(shù)08-01
計(jì)算機(jī)二級(jí)Office高級(jí)應(yīng)用知識(shí)點(diǎn)07-19
2017計(jì)算機(jī)二級(jí)office高級(jí)應(yīng)用練習(xí)試題07-18
計(jì)算機(jī)二級(jí)office高級(jí)應(yīng)用考試應(yīng)試技巧09-11
計(jì)算機(jī)二級(jí)考試《Office高級(jí)應(yīng)用》常見(jiàn)考點(diǎn)08-15