基本數(shù)據(jù)結(jié)構(gòu)與算法_第1頁(yè)
基本數(shù)據(jù)結(jié)構(gòu)與算法_第2頁(yè)
基本數(shù)據(jù)結(jié)構(gòu)與算法_第3頁(yè)
基本數(shù)據(jù)結(jié)構(gòu)與算法_第4頁(yè)
基本數(shù)據(jù)結(jié)構(gòu)與算法_第5頁(yè)
已閱讀5頁(yè),還剩120頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2003.11.全國(guó)計(jì)算機(jī)等級(jí)考試

二級(jí)公共基礎(chǔ)知識(shí)

(2)基本數(shù)據(jù)結(jié)構(gòu)與算法2.1算法2.1.1算法(algorithm)基本概念對(duì)特定問(wèn)題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個(gè)或多個(gè)操作。它是一組嚴(yán)謹(jǐn)?shù)囟x運(yùn)算順序的規(guī)則,并且每一個(gè)規(guī)則都是有效的,且是明確的,此順序?qū)⒃谟邢薜拇螖?shù)下終止。算法具有有窮性、確定性、可行性、輸入和輸出(擁有足夠的情報(bào))等5個(gè)重要特性。2.1.2算法的基本要素

1、對(duì)數(shù)據(jù)對(duì)象的運(yùn)算和操作算術(shù)運(yùn)算邏輯運(yùn)算關(guān)系運(yùn)算數(shù)據(jù)傳輸2、算法的控制結(jié)構(gòu)算法中各操作之間的執(zhí)行順序描述算法的工具通常有傳統(tǒng)流程圖、N-S結(jié)構(gòu)化流程圖、算法描述語(yǔ)言等一個(gè)算法一般可以用順序、選擇、循環(huán)三種基本機(jī)構(gòu)組合而成。2.1.3算法設(shè)計(jì)基本方法列舉法歸納法遞推遞歸(以簡(jiǎn)潔的形式設(shè)計(jì)和描述算法)減半遞推技術(shù)回溯法2.2算法復(fù)雜度2.2.1時(shí)間復(fù)雜度依據(jù)算法算法編制的程序在計(jì)算機(jī)上運(yùn)行時(shí)所消耗的時(shí)間來(lái)度量。通常有事后統(tǒng)計(jì)法和事前分析估算法。一個(gè)算法是由控制結(jié)構(gòu)(順序、分支和循環(huán))和原操作構(gòu)成的,算法時(shí)間取決于兩者的綜合效果。算法中基本操作重復(fù)執(zhí)行次數(shù)n和算法執(zhí)行時(shí)間同步增長(zhǎng),稱(chēng)作算法的時(shí)間復(fù)雜度。2.2.2算法的空間復(fù)雜度一般是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間一個(gè)算法所占用的存儲(chǔ)空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲(chǔ)空間以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲(chǔ)空間一個(gè)上機(jī)執(zhí)行的程序除了需要存儲(chǔ)空間來(lái)寄存本身所用指令、常數(shù)、變量和輸入數(shù)據(jù)外,也需要一些對(duì)數(shù)據(jù)進(jìn)行操作的工作單元和存儲(chǔ)一些為實(shí)現(xiàn)計(jì)算所需信息的輔助空間。例題講解算法的時(shí)間復(fù)雜度是指A)執(zhí)行算法程序所需要的時(shí)間B)算法程序的長(zhǎng)度C)算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)D)算法程序中的指令條數(shù)算法的基本特征是可行性、確定性、

【1】和擁有足夠的情報(bào)。算法的空間復(fù)雜度是指

A)算法程序的長(zhǎng)度 B)算法程序中的指令條數(shù)

C)算法程序所占的存儲(chǔ)空間D)執(zhí)行過(guò)程中所需要的存儲(chǔ)空間在計(jì)算機(jī)中,算法是指

A)加工方法 B)解題方案的準(zhǔn)確而完整的描述

C)排序方法 D)查詢(xún)方法算法分析的目的是

A)找出數(shù)據(jù)結(jié)構(gòu)的合理性 B)找出算法中輸入和輸出之間的關(guān)系

C)分析算法的易懂性和可靠性 D)分析算法的效率以求改進(jìn)算法的工作量大小和實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少分別稱(chēng)為算法的【1】。2.2數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的定義數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的圖形表示線性結(jié)構(gòu)與非線性結(jié)構(gòu)2.2.1數(shù)據(jù)結(jié)構(gòu)研究的主要內(nèi)容當(dāng)今計(jì)算機(jī)應(yīng)用的特點(diǎn):所處理的數(shù)據(jù)量大且具有一定的關(guān)系;對(duì)其操作不再是單純的數(shù)值計(jì)算,而更多地是需要對(duì)其進(jìn)行組織、管理和檢索。應(yīng)用舉例1——學(xué)籍檔案管理假設(shè)一個(gè)學(xué)籍檔案管理系統(tǒng)應(yīng)包含如下表1-1所示的學(xué)生信息。特點(diǎn):

l 每個(gè)學(xué)生的信息占據(jù)一行,所有學(xué)生的信息按學(xué)號(hào)順序依次排列構(gòu)成一張表格;

l 表中每個(gè)學(xué)生的信息依據(jù)學(xué)號(hào)的大小存在著一種前后關(guān)系,這就是我們所說(shuō)的線性結(jié)構(gòu);

l 對(duì)它的操作通常是插入某個(gè)學(xué)生的信息,刪除某個(gè)學(xué)生的信息,更新某個(gè)學(xué)生的信息,按條件檢索某個(gè)學(xué)生的信息等等。應(yīng)用舉例2——輸出n個(gè)對(duì)象的全排列輸出n個(gè)對(duì)象的全排列可以使用下圖1-1所示的形式描述。圖1-13個(gè)對(duì)象的全排列過(guò)程特點(diǎn):

l 在求解過(guò)程中,所處理的數(shù)據(jù)之間具有層次關(guān)系,這是我們所說(shuō)的樹(shù)形結(jié)構(gòu);

l 對(duì)它的操作有:建立樹(shù)形結(jié)構(gòu),輸出最低層結(jié)點(diǎn)內(nèi)容等等。應(yīng)用舉例3——制定教學(xué)計(jì)劃在制定教學(xué)計(jì)劃時(shí),需要考慮各門(mén)課程的開(kāi)設(shè)順序。有些課程需要先導(dǎo)課程,有些課程則不需要,而有些課程又是其他課程的先導(dǎo)課程。比如,計(jì)算機(jī)專(zhuān)業(yè)課程的開(kāi)設(shè)情況如下表1-2所示:課程先后關(guān)系的圖形描形式:c1c9c4c2c12c10c11c5c3c6c7c8圖1-2計(jì)算機(jī)專(zhuān)業(yè)必修課程開(kāi)設(shè)先后關(guān)系特點(diǎn)

l 課程之間的先后關(guān)系用圖結(jié)構(gòu)描述;

l 通過(guò)實(shí)施創(chuàng)建圖結(jié)構(gòu),按要求將圖結(jié)構(gòu)中的頂點(diǎn)進(jìn)行線性排序。結(jié)論:數(shù)據(jù)結(jié)構(gòu)主要研究以下三個(gè)方面的問(wèn)題:數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算

數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。2.2.2基本概念和術(shù)語(yǔ)能輸入到計(jì)算機(jī)中并能被計(jì)算機(jī)程序處理的符號(hào)的集合。整數(shù)(1,2)、實(shí)數(shù)(1.1,1.2)字符串(Beijing)、圖形、聲音。2.2.2基本概念和術(shù)語(yǔ)數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。2.2.2基本概念和術(shù)語(yǔ)計(jì)算機(jī)管理圖書(shū)問(wèn)題

在圖書(shū)館里有各種卡片:有按書(shū)名編排的、有按作者編排的、有按分類(lèi)編排如何將查詢(xún)圖書(shū)的這些信息存入計(jì)算機(jī)中既要考慮查詢(xún)時(shí)間短,又要考慮節(jié)省空間數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。最簡(jiǎn)單的辦法之一是建立一張表,每一本書(shū)的信息在表中占一行,如2.2.2基本概念和術(shù)語(yǔ)數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。如何將0,1,2,3,4,5,6,7,8,9這10個(gè)數(shù)存放在計(jì)算機(jī)中能最快地達(dá)到你所需要的目的?目的不同,最佳的存儲(chǔ)方方法就不同。

從大到小排列:9,8,7,6,5,4,3,2,1,0輸出偶數(shù):0,2,4,6,8,1,3,5,7,9數(shù)據(jù)元素在計(jì)算機(jī)中的表示數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。2.2.2基本概念和術(shù)語(yǔ)對(duì)數(shù)據(jù)結(jié)構(gòu)中的節(jié)點(diǎn)進(jìn)行操作處理(插入、刪除、修改、查找、排序)2.2.2基本概念和術(shù)語(yǔ)數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。數(shù)據(jù)元素(DataElement)數(shù)據(jù)元素是數(shù)據(jù)的基本單位,即數(shù)據(jù)集合中的個(gè)體。有時(shí)一個(gè)數(shù)據(jù)元數(shù)可由若干數(shù)據(jù)項(xiàng)(DataItem)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小單位。數(shù)據(jù)元素亦稱(chēng)節(jié)點(diǎn)或記錄。數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)有限個(gè)數(shù)據(jù)元素的集合有限個(gè)節(jié)點(diǎn)間關(guān)系的集合

1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)

2、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)

B.非線性結(jié)構(gòu)A順序存儲(chǔ)

B鏈?zhǔn)酱鎯?chǔ)線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)線性結(jié)構(gòu)

A,B,C,·······,X,Y,Z學(xué)生成績(jī)表86胡孝臣986110395劉忠賞9861107100張卓9861109成績(jī)姓名學(xué)號(hào)線性表——結(jié)點(diǎn)間是以線性關(guān)系聯(lián)結(jié)

1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)

2、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲(chǔ)

B鏈?zhǔn)酱鎯?chǔ)線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)樹(shù)形結(jié)構(gòu)全校學(xué)生檔案管理的組織方式計(jì)算機(jī)程序管理系統(tǒng)也是典型的樹(shù)形結(jié)構(gòu)ABCDEFGH樹(shù)形結(jié)構(gòu)——結(jié)點(diǎn)間具有分層次的連接關(guān)系HBCDEFGA

1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)

2、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲(chǔ)

B鏈?zhǔn)酱鎯?chǔ)線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面(亦稱(chēng)物理結(jié)構(gòu))1423D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3)(3,4),(2,4)}213D={1,2,3}R={(1,2),(2,3),(3,2),(1,3)}

圖形結(jié)構(gòu)——節(jié)點(diǎn)間的連結(jié)是任意的

1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)

2、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲(chǔ)

B鏈?zhǔn)酱鎯?chǔ)線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面(亦稱(chēng)物理結(jié)構(gòu))元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*mLo+(n-1)*m存儲(chǔ)地址存儲(chǔ)內(nèi)容Loc(a)=Lo+(i-1)*m順序存儲(chǔ)每個(gè)元素所占用的存儲(chǔ)單元個(gè)數(shù)元素n……..元素i……..元素2元素1存儲(chǔ)內(nèi)容順序存儲(chǔ)結(jié)構(gòu)常用于線性數(shù)據(jù)結(jié)構(gòu),將邏輯上相鄰的數(shù)據(jù)元素存儲(chǔ)在物理上相鄰的存儲(chǔ)單元里。順序存儲(chǔ)結(jié)構(gòu)的三個(gè)弱點(diǎn):1.作插入或刪除操作時(shí),需移動(dòng)大量元數(shù)。2.長(zhǎng)度變化較大時(shí),需按最大空間分配。3.表的容量難以擴(kuò)充。

1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)

2、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲(chǔ)

B鏈?zhǔn)酱鎯?chǔ)

線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面(亦稱(chēng)物理結(jié)構(gòu))1536元素21400元素11346元素3

∧元素41345h

鏈?zhǔn)酱鎯?chǔ)每個(gè)節(jié)點(diǎn)都由兩部分組成:數(shù)據(jù)域和指針域。數(shù)據(jù)域存放元素本身的數(shù)據(jù),指針域存放指針。數(shù)據(jù)元素之間邏輯上的聯(lián)系由指針來(lái)體現(xiàn)。1536元素21400元素11346元素3

∧元素4head

1346元素3

1536…….……..…….

1536元素2

1400…….……..…….

∧元素4

1346

1400元素1

1345指針存儲(chǔ)內(nèi)容存儲(chǔ)地址

鏈?zhǔn)酱鎯?chǔ)13451536元素21400元素11346元素3

∧元素41345h

鏈?zhǔn)酱鎯?chǔ)1.比順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)密度小

(每個(gè)節(jié)點(diǎn)都由數(shù)據(jù)域和指針愈組成)。2.邏輯上相鄰的節(jié)點(diǎn)物理上不必相鄰。3.插入、刪除靈活

(不必移動(dòng)節(jié)點(diǎn),只要改變節(jié)點(diǎn)中的指針)。鏈接存儲(chǔ)結(jié)構(gòu)特點(diǎn):

1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)

2、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲(chǔ)

B鏈?zhǔn)酱鎯?chǔ)線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面(亦稱(chēng)物理結(jié)構(gòu))線性結(jié)構(gòu)和非線性結(jié)構(gòu)如果一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個(gè)條件:有且只有一個(gè)根結(jié)點(diǎn);每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件則稱(chēng)該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu)(線性表)。如果一個(gè)數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu),則稱(chēng)之為非線性結(jié)構(gòu)。2.3線性表2.3.1線性表的定義線性表是n個(gè)元素的有限序列,它們之間的關(guān)系可以排成一個(gè)線性序列:

a1,a2,……,ai,……,an其中n稱(chēng)作表的長(zhǎng)度,當(dāng)n=0時(shí),稱(chēng)作空表。線性表的特點(diǎn):1.線性表中所有元素的性質(zhì)相同。2.除第一個(gè)和最后一個(gè)數(shù)據(jù)元素之外,其它數(shù)據(jù)元素有且僅有一個(gè)前驅(qū)和一個(gè)后繼。第一個(gè)數(shù)據(jù)元素?zé)o前驅(qū),最后一個(gè)數(shù)據(jù)元素?zé)o后繼。3.數(shù)據(jù)元素在表中的位置只取決于它自身的序號(hào)。在線性表上常用的運(yùn)算有:初始化、求長(zhǎng)度、取元素、修改、前插、刪除、檢索、排序。2.3.2線性表的順序存儲(chǔ)結(jié)構(gòu)及其插入與刪除操作特點(diǎn):

1、線性表中數(shù)據(jù)元素類(lèi)型一致,只有數(shù)據(jù)域,存儲(chǔ)空間利用率高。

2、所有元素所占的存儲(chǔ)空間是連續(xù)的

3、各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的

2.做插入、刪除時(shí)需移動(dòng)大量元素。

3.空間估計(jì)不明時(shí),按最大空間分配。元素an……..元素ai……..元素a2元素a1bb+mb+(i-1)*mb+(maxlen-1)*m存儲(chǔ)地址內(nèi)存狀態(tài)Loc(元素i)=b+(i-1)*m順序存儲(chǔ)結(jié)構(gòu)示意圖(順序表):首地址起始地址基地址每個(gè)元素所占用的存儲(chǔ)單元個(gè)數(shù)元素a1元素a2……..元素ai+1……..

01i線性表的順序存儲(chǔ)結(jié)構(gòu)——可用VB語(yǔ)言中的一維數(shù)組來(lái)描述.DimV[M]Asinteger;

/*V是數(shù)組的名字,M是數(shù)組大小,假設(shè)數(shù)組中的元素是整型類(lèi)型*/第i個(gè)元素的ai存儲(chǔ)地址:Loc(ai)=Loc(a1)+(i-1)*mV[0]V[1]V[i]V[m-1]…..a2a1an…..ai+1ai01i-1in-1

1-1插入運(yùn)算ai-1…..a2a1alength

…ai+1aixai-1…..a2a1

aiai+1

…alength

alength

…ai+1

aixOptionBase0Functionint

insq(iAsInteger,xAsInteger,V()AsInteger,MAsInteger,)/*順序表插入函數(shù)*/

/*在線性表V中第i個(gè)元素之前插入x,i的合法值為1

in*/

DimnAsInteger,jAsIntegern=UBound(V)/*獲取表長(zhǎng)*/Ifn=MThen/*M是存儲(chǔ)空間的大小*/print"overflown“ExitFunctionEndIfIf(i<1)or(i>n+1)Thenprint"iiserror“ExitFunction/*i值不合法*/Elseforj=nToiStep-1

V(j)=V(j-1)/*插入位置后的元素依次右移*/NextJ

V(j)=x/*插入x*/EndIfEndFunction注意數(shù)組元素從0開(kāi)始1-2刪除運(yùn)算OptionBaseoFunctiondelsq(iAsInteger,V()AsInteger])

/*在線性表V中刪除第i個(gè)元素*/DimnAsInteger,jAsIntegern=UBound(V)Ifi<1ori>nThenprint"Thiselementisnotinthelist“ExitFunctionelseForj=ITonV(j-1)=V(j)/*被刪除元素之后的元素左移*/NextJEndifEndFunction插入算法的分析假設(shè)線性表中含有n個(gè)數(shù)據(jù)元素,在進(jìn)行插入操作時(shí),若假定在n+1個(gè)位置上插入元素的可能性均等,則平均移動(dòng)元素的個(gè)數(shù)為:

刪除算法的分析在進(jìn)行刪除操作時(shí),若假定刪除每個(gè)元素的可能性均等,則平均移動(dòng)元素的個(gè)數(shù)為:分析結(jié)論順序存儲(chǔ)結(jié)構(gòu)表示的線性表,在做插入或刪除操作時(shí),平均需要移動(dòng)大約一半的數(shù)據(jù)元素。當(dāng)線性表的數(shù)據(jù)元素量較大,并且經(jīng)常要對(duì)其做插入或刪除操作時(shí),這一點(diǎn)需要值得考慮。2.4棧和隊(duì)列2.4.1棧和隊(duì)列的定義

棧和隊(duì)列是兩種特殊的線性表,它們是運(yùn)算時(shí)要受到某些限制的線性表,故也稱(chēng)為限定性的數(shù)據(jù)結(jié)構(gòu)。2.4.1.1棧的定義棧:限定只能在表的一端進(jìn)行插入和刪除的特殊的線性表,此種結(jié)構(gòu)稱(chēng)為后進(jìn)先出設(shè)棧s=(a1,a2,...,ai,...,an),其中a1是棧底元素,an是棧頂元素。棧頂(top):允許插入和刪除的一端;約定top始終指向新數(shù)據(jù)元素將存放的位置。棧底(bottom):不允許插入和刪除的一端。a1a2….an進(jìn)棧出棧棧頂棧底隊(duì)列的主要運(yùn)算(1)設(shè)置一個(gè)空隊(duì)列;(2)插入一個(gè)新的隊(duì)尾元素,稱(chēng)為進(jìn)隊(duì);(3)刪除隊(duì)頭元素,稱(chēng)為出隊(duì);(4)讀取隊(duì)頭元素;2.4.1.2隊(duì)列的定義定義:一種特殊的線性結(jié)構(gòu),限定只能在表的一端進(jìn)行插入,在表的另一端進(jìn)行刪除的線性表。此種結(jié)構(gòu)稱(chēng)為先進(jìn)先出(FIFO)表。

a1,

a2,

a3,

a4,…………

an-1,

an隊(duì)列示意圖隊(duì)頭隊(duì)尾2.4.2棧的順序存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算a2a1a1a2top

用順序存儲(chǔ)結(jié)構(gòu)表示的棧。

順序棧用一組連續(xù)的存儲(chǔ)單元存放自棧底到棧頂?shù)臄?shù)據(jù)元素,一般用一維數(shù)組表示,設(shè)置一個(gè)簡(jiǎn)單變量top指示棧頂位置,稱(chēng)為棧頂指針,它始終指向待插入元素的位置。基本運(yùn)算:壓(進(jìn))棧:PUSH出棧:POP

3210

(a)rear=front=-1(隊(duì)空)e3e4

(c)e1,e2出隊(duì),e4入隊(duì)

隊(duì)滿rear=4fronte1e2e3

(b)rearfront(b)e1,e2,e3入隊(duì)隊(duì)空時(shí),令rear=front=-1,當(dāng)有新元素入隊(duì)時(shí),尾指針加1,當(dāng)有元素出隊(duì)時(shí),頭指針加1。故在非空隊(duì)列中,頭指針始終指向隊(duì)頭元素前一個(gè)位置,而尾指針始終指向隊(duì)尾元素的位置2.4.3隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算2.5鏈表線性單鏈表雙向鏈表循環(huán)鏈表結(jié)構(gòu)及其基本運(yùn)算2.5.1線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

將線性表的元素放到一個(gè)具有頭指針的鏈表中,鏈表中每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)域和指針域。

數(shù)據(jù)域存放數(shù)據(jù),指針域存放后繼結(jié)點(diǎn)的地址,最后一個(gè)結(jié)點(diǎn)的指針域?yàn)榭?。邏輯上相鄰的?shù)據(jù)元素在內(nèi)存中的物理存儲(chǔ)空間不一定相鄰。上圖的線性表為ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG線性鏈表表示法:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)

插入、刪除靈活方便,不需要移動(dòng)結(jié)點(diǎn),只要改變結(jié)點(diǎn)中指針域的值即可。適合于線性表是動(dòng)態(tài)變化的,不進(jìn)行頻繁查找操作、但經(jīng)常進(jìn)行插入刪除時(shí)使用。

鏈表的查找只能從頭指針開(kāi)始順序查找。

a1a2an∧a3L…..線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)可用C語(yǔ)言中的“結(jié)構(gòu)指針”來(lái)描述帶頭結(jié)點(diǎn)的線性鏈表datanexttypedef

struct

LNode{

intdata;

Struct

LNode*next;}JD;babaxPP單鏈表的插入運(yùn)算S在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)babax∧anaia1a2PPai-1xL單鏈表的插入運(yùn)算S單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;p->next=s;returnOK;}

∧anaia1a2Pai-1L單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;p->next=s;returnOK;}∧anaia1a2Pai-1L單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;p->next=s;returnOK;}S∧anaia1a2Pai-1xL單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;

s->next=p->next;p->next=s;returnOK;}S∧anaia1a2Pai-1xL單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;

s->next=p->next;

p->next=s;returnOK;}S∧anaia1a2Pai-1xL單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;

p->next=s;

returnOK;}voidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;

if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算a1qai-1a1aiai+1Lpqvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpqvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/

p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/

free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算線性鏈表的查找操作:設(shè)無(wú)表頭結(jié)點(diǎn)的線性鏈表的頭指針為h,沿著鏈表的開(kāi)始往后找結(jié)點(diǎn)x,若找到,則返回該結(jié)點(diǎn)在鏈表中的位置,否則返回空地址。JD*lbcz(JD*h,intx){JD*p;p=h;while(p!=NULL&&p->data!=x)p=p->next;return(p);}2.5.2循環(huán)鏈表:

首尾相接的鏈表。將最后一個(gè)結(jié)點(diǎn)的空指針改為指向頭結(jié)點(diǎn),從任一結(jié)點(diǎn)出發(fā)均可找到其它結(jié)點(diǎn)。a1a2an∧a3L…..帶頭結(jié)點(diǎn)的單鏈表a1a2ana3L…..循環(huán)單鏈表2.5.3雙向鏈表在每個(gè)結(jié)點(diǎn)中設(shè)置兩個(gè)指針,一個(gè)指向后繼,一個(gè)指向前驅(qū)。可直接確定一個(gè)結(jié)點(diǎn)的前驅(qū)和后繼結(jié)點(diǎn)。可提高效率。datanextbefore線性表的應(yīng)用:應(yīng)用最廣的數(shù)據(jù)結(jié)構(gòu)?!じ呒?jí)語(yǔ)言中的數(shù)組;·計(jì)算機(jī)的文件系統(tǒng);·計(jì)算機(jī)的目錄系統(tǒng);·電話號(hào)碼查詢(xún)系統(tǒng)(可采用順序表或單鏈表結(jié)構(gòu));·各種事務(wù)處理(各種表格均采用順序表和線性鏈表結(jié)構(gòu))LS28375^PR(1)L=P->link;28375^PRSLL

例題

對(duì)以下單鏈表分別執(zhí)行下列各程序段,并畫(huà)出結(jié)果示意圖.LS28375^PR(2)R->data=P->data;28575^PRS(3)R->data=P->link->data;28775^PRSLS28375^PR(4)P->link->link->link->data=P->data;25375^PRSLS28375^PR(5)T=P;while(T!=NULL){T->data=(T->data)*2;T=T->link;}LS2^PR1014616LS28375^PR(6)T=P;while(T->link!=NULL){T->data=(T->data)*2;T=T->link;}LS2^PR101468LS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;R->link=P;P->link=S;LS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;R->link=P;P->link=S;PLS28375^PRLS28375^PR(7)P=(JD*)malloc(sizeof(JD));

P->data=10;R->link=P;P->link=S;P10LS28375^PRLS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;

R->link=P;P->link=S;LS28375^RP10LS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;R->link=P;

P->link=S;LS28375^RP10LS28375^PR(8)T=L;T->link=P->link;free(P);LS2837^PRT5LS28375^PR(9)S->link=L;LS28375PR如果S->link==L則S所指向的結(jié)點(diǎn)為尾結(jié)點(diǎn).LS28375^PR2.6樹(shù)樹(shù)的基本概念二叉樹(shù)的定義及其存儲(chǔ)結(jié)構(gòu)二叉樹(shù)的前序、中序和后序遍歷2.6.1樹(shù)的定義由一個(gè)或多個(gè)結(jié)點(diǎn)組成的有限集合。僅有一個(gè)根結(jié)點(diǎn),結(jié)點(diǎn)間有明顯的層次結(jié)構(gòu)關(guān)系。

A

C

GT2D

HIT3J

M

BEL

KT1F現(xiàn)實(shí)世界中,能用樹(shù)的結(jié)構(gòu)表示的例子:學(xué)校的行政關(guān)系、書(shū)的層次結(jié)構(gòu)、人類(lèi)的家族血緣關(guān)系等。介紹幾個(gè)概念:見(jiàn)課本10頁(yè)結(jié)點(diǎn)(Node):樹(shù)中的元素,包含數(shù)據(jù)項(xiàng)及若干指向其子樹(shù)的分支。結(jié)點(diǎn)的度(Degree):結(jié)點(diǎn)擁有的子樹(shù)數(shù)。結(jié)點(diǎn)的層次:從根結(jié)點(diǎn)開(kāi)始算起,根為第一層。葉子(Leaf):度為零的結(jié)點(diǎn),也稱(chēng)端結(jié)點(diǎn)。孩子(Child):結(jié)點(diǎn)子樹(shù)的根稱(chēng)為該結(jié)點(diǎn)的孩子結(jié)點(diǎn)。兄弟(Sibling):同一雙親的孩子。雙親(Parent):孩子結(jié)點(diǎn)的上層結(jié)點(diǎn),稱(chēng)為這些結(jié)點(diǎn)的雙親。深度(Depth):樹(shù)中結(jié)點(diǎn)的最大層次數(shù)。森林(Forest):M棵互不相交的樹(shù)的集合。

A

C

GT2D

HIT3J

M

BEL

KT1F2.6.2二叉樹(shù)(BinaryTree)1、二叉樹(shù)的定義及其性質(zhì)

(1)二叉樹(shù)的定義二叉樹(shù)的五種基本形態(tài)二叉樹(shù)一種特殊的樹(shù)型結(jié)構(gòu),特點(diǎn)是樹(shù)中每個(gè)結(jié)點(diǎn)只有兩棵子樹(shù),且子樹(shù)有左右之分,次序不能顛倒。空二叉樹(shù)

僅有根結(jié)點(diǎn)

右子樹(shù)為空左子樹(shù)為空左右子樹(shù)均非空因?yàn)闃?shù)的每個(gè)結(jié)點(diǎn)的度不同,存儲(chǔ)困難,使對(duì)樹(shù)的處理算法很復(fù)雜。所以引出二叉樹(shù)的討論。二叉數(shù)是n(n

0)個(gè)結(jié)點(diǎn)的有限集合。它或?yàn)榭諗?shù)(n=0),或由一個(gè)根結(jié)點(diǎn)和兩棵分別稱(chēng)為根的左子樹(shù)和右子樹(shù)的互不相交的二叉數(shù)組成。

特別要注意:二叉數(shù)不是樹(shù)的特殊情況。aabb兩棵不同的二叉數(shù)A、

二叉樹(shù)的第i層上至多有2i-1(i

1)個(gè)結(jié)點(diǎn)。(2)二叉樹(shù)的基本性質(zhì)423167891011121314155第三層上(i=3),有23-1=4個(gè)節(jié)點(diǎn)。第四層上(i=4),有24-1=8個(gè)節(jié)點(diǎn)。A、

二叉樹(shù)的第i層上至多有2i-1(i

1)個(gè)結(jié)點(diǎn)。

B、

深度為h的二叉樹(shù)中至多含有2h-1個(gè)結(jié)點(diǎn)。(2)二叉樹(shù)的基本性質(zhì)423167891011121314155此樹(shù)的深度h=4,共有24-1=15個(gè)節(jié)點(diǎn)。A、

二叉樹(shù)的第i層上至多有2i-1(i

1)個(gè)結(jié)點(diǎn)。B、

深度為h的二叉樹(shù)中至多含有2h-1個(gè)結(jié)點(diǎn)。C、

若在任意一棵二叉樹(shù)中,有n0個(gè)葉子結(jié)點(diǎn),有n2個(gè)度為2的結(jié)點(diǎn),則:n0=n2+1(2)二叉樹(shù)的基本性質(zhì)423167891011121314155n0=8n2=7423167891011125

非完全二叉樹(shù)(4)完全二叉樹(shù)423167891011125

完全二叉樹(shù)特點(diǎn):1、除最后一層外,每一層都取最大結(jié)點(diǎn)數(shù),最后一層結(jié)點(diǎn)都集中在該層最左邊的若干位置。2、若設(shè)二叉樹(shù)的高度為h,除第h層外,其它各層(1~h-1)的結(jié)點(diǎn)數(shù)都達(dá)到最大個(gè)數(shù),第h層從右向左連續(xù)缺若干結(jié)點(diǎn),這就是完全二叉樹(shù)。

(3)滿二叉樹(shù)423167891011121314155特點(diǎn):每一層上都含有最大結(jié)點(diǎn)數(shù)。(5)樹(shù)與二叉樹(shù)的區(qū)別A.樹(shù)的結(jié)點(diǎn)個(gè)數(shù)至少為1,而二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)可以為0。B.樹(shù)中結(jié)點(diǎn)的最大度數(shù)沒(méi)有限制,二叉樹(shù)結(jié)點(diǎn)最大度數(shù)為2。C.樹(shù)的結(jié)點(diǎn)無(wú)左、右之分,二叉樹(shù)的結(jié)點(diǎn)子樹(shù)有明確的左、右之分。

樹(shù)

二叉樹(shù)2、二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)

(2)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)T[16]若父結(jié)點(diǎn)在數(shù)組中i下標(biāo)處,其左孩子在2*i處,右孩子在2*i+1處。11ABcFED

●●●●●●●●●124

8

910563712131415(1)順序存儲(chǔ)結(jié)構(gòu)(1)順序存儲(chǔ)結(jié)構(gòu)2h-1=24-1=15用一組連續(xù)的存儲(chǔ)單元存放二叉樹(shù)的數(shù)據(jù)元素。結(jié)點(diǎn)在數(shù)組中的相對(duì)位置蘊(yùn)含著結(jié)點(diǎn)之間的關(guān)系。0000FE000DC0BA15141312111098765432100一般二叉樹(shù)必須按完全二叉樹(shù)的形式存儲(chǔ),將造成存儲(chǔ)的浪費(fèi)。2.6.3二叉樹(shù)的遍歷

查找某個(gè)結(jié)點(diǎn),或?qū)Χ鏄?shù)中全部結(jié)點(diǎn)進(jìn)行某種處理,就需要遍歷。(1)遍歷定義及遍歷算法遍歷是指按某條搜索路線尋訪樹(shù)中每個(gè)結(jié)點(diǎn),且每個(gè)結(jié)點(diǎn)只被訪問(wèn)一次。按先左后右的原則,一般使用三種遍歷:先序遍歷(DLR):

訪問(wèn)根結(jié)點(diǎn),按先序遍歷左子樹(shù),按先序遍歷右子樹(shù)。中序遍歷(LDR):

按中序遍歷左子樹(shù),訪問(wèn)根結(jié)點(diǎn),按中序遍歷右子樹(shù)。后序遍歷(LRD):

按后序遍歷左子樹(shù),按后序遍歷右子樹(shù),訪問(wèn)根結(jié)點(diǎn)。二叉樹(shù)為空時(shí),執(zhí)行空操作,即空二叉樹(shù)已遍歷完。(2)遍歷算法先序遍歷:DLR中序遍歷:LDR后序遍歷:LRDADBCT1T2T3DLRADLRDLR>B>>D>>CDLR以先序遍歷DLR為例演示遍歷過(guò)程ABDCBDACDBCA2.7查找和排序順序查找與二分查找算法基本排序算法(交換類(lèi)排序、選擇類(lèi)排序、插入類(lèi)排序)2.7.1查找查找是在一個(gè)給定的數(shù)據(jù)結(jié)構(gòu)中,根據(jù)給定的條件查找滿足條件的結(jié)點(diǎn)。不同的數(shù)據(jù)結(jié)構(gòu)采用不同的查找方法。查找的效率直接影響數(shù)據(jù)處理的效率。查找的結(jié)果:查找成功:找到滿足條件的結(jié)點(diǎn)查找失?。赫也坏綕M足條件的結(jié)點(diǎn)。2.7.1.1順序查找(線性查找)查找過(guò)程:

對(duì)給定的一關(guān)鍵字K,從線性表的一端開(kāi)始,逐個(gè)進(jìn)行記錄的關(guān)鍵字和K的比較,直到找到關(guān)鍵字等于K的記錄或到達(dá)表的另一端??梢圆捎脧那跋蚝蟛?,也可采用從后向前查的方法。·在平均情況下,大約要與表中一半以上元素進(jìn)行比較,效率較低。平均查找長(zhǎng)度較大。·在下面兩種情況下只能采取順序查找:

a.線性表為無(wú)序表(元素排列是無(wú)序的);

b.即使是有序線性表,但采用的是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。2.7.1.2折半查找(二分法查找)思想:先確定待查找記錄所在的范圍,然后逐步縮小范圍,直到找到或確認(rèn)找不到該記錄為止。前提:必須在具有順序存儲(chǔ)結(jié)構(gòu)的有序表中進(jìn)行。分三種情況:1)若中間項(xiàng)的值等于x,則說(shuō)明已查到。2)若x小于中間項(xiàng)的值,則在線性表的前半部分查找;3)若x大于中間項(xiàng)的值,則在線性表的后半部分查找。特點(diǎn):比順序查找方法效率高。最壞的情況下,需要比較log2n次。查找23和79的過(guò)程如下圖:mid=(low+high)/2不進(jìn)位取整(08,14,23,37,46,55,68,79,91)(08,14,23,37,46,55,68,79,91)lowhighmid(08,14,23,37,46,55,68,79,91)lowhigh=mid-1mid(08,14,23,37,46,55,68,79,91)low=mid+1highmid(08,14,23,37,46,55,68,79,

91)lowhighmid(08,14,23,37,46,55,68,79,91)lowhighmid(08,14,23,37,46,55,68,79,91)lowhighmid2.7.2排序2.7.2.1概述1、排序的功能:將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列,重新排成一個(gè)按關(guān)鍵字有序的序列。2、排序過(guò)程的組成步驟:首先比較兩個(gè)關(guān)鍵字的大??;然后將記錄從一個(gè)位置移動(dòng)到另一個(gè)位置。排序方法插入排序選擇排序交換排序直接插入排序折半插入排序簡(jiǎn)單選擇排序堆排序起泡排序快速排序2.7.2.2插入排序

直接插入、折半插入1、直接插入排序:

基本思想:從數(shù)組的第2號(hào)元素開(kāi)始,順序從數(shù)組中取出元素,并將該元素插入到其左端已排好序的數(shù)組的適當(dāng)位置上。需要n(n-1)/2次比較該算法適合于n較小的情況,時(shí)間復(fù)雜度為O(n2).待排元素序列:[53]2736156942第一次排序:[2753]36156942第二次排序:[273653]156942第三次排序:[15273653]6942第四次排序:[1527365369]42第五次排序:[152736425369]

直接插入排序示例對(duì)于有n個(gè)數(shù)據(jù)元素的待排序列,插入操作要進(jìn)行n-1次2、折半插入排序

折半插入排序在尋找插入位置時(shí),不是逐個(gè)比較而是利用折半查找的原理尋找插入位置。待排序元素越多,改進(jìn)效果越明顯。折半插入排序的條件:在有序序列中插入一個(gè)關(guān)鍵字。例:有6個(gè)記錄,前5個(gè)已排序的基礎(chǔ)上,對(duì)第6個(gè)記錄排序。[1527365369]42

low

mid

high

[1527365369]42

low

high

mid

[1527365369]42

high

low[152736425369](high<low,查找結(jié)束,插入位置為low或high+1)(42>36)(42<53)

1、簡(jiǎn)單選擇排序思想:首先從1~n個(gè)元素中選出關(guān)鍵字最小的記錄交換到第一個(gè)位置上。然后再?gòu)牡?個(gè)到第n個(gè)元素中選出次小的記錄交換到第二個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論