Java版數(shù)據(jù)結(jié)構(gòu)(程序員必須看)課件.ppt
《Java版數(shù)據(jù)結(jié)構(gòu)(程序員必須看)課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java版數(shù)據(jù)結(jié)構(gòu)(程序員必須看)課件.ppt(1062頁珍藏版)》請?jiān)趨R文網(wǎng)上搜索。
1、Java版數(shù)據(jù)結(jié)構(gòu)(程序員必須看)第一章第一章緒緒論論1.1什么是數(shù)據(jù)結(jié)構(gòu)什么是數(shù)據(jù)結(jié)構(gòu)1.2有關(guān)概念和術(shù)語有關(guān)概念和術(shù)語1.3算法和算法分析算法和算法分析1.3.1算法算法1.3.2算法設(shè)計(jì)的要求算法設(shè)計(jì)的要求1.3.3算法效率的度量算法效率的度量1.3.4算法的存儲(chǔ)空間的需求算法的存儲(chǔ)空間的需求第一章第一章 緒緒 論論 計(jì)算機(jī)學(xué)科一直處于高速發(fā)展中計(jì)算機(jī)學(xué)科一直處于高速發(fā)展中,而且這種發(fā)展速度還會(huì)持續(xù)。而且這種發(fā)展速度還會(huì)持續(xù)。計(jì)算機(jī)科學(xué)已經(jīng)難以完全覆蓋學(xué)科新的發(fā)展,因此擴(kuò)展后的計(jì)算機(jī)科學(xué)已經(jīng)難以完全覆蓋學(xué)科新的發(fā)展,因此擴(kuò)展后的學(xué)科稱為學(xué)科稱為計(jì)算學(xué)科計(jì)算學(xué)科。包括:計(jì)算機(jī)科學(xué)、計(jì)算機(jī)工
2、程、軟件工程、信息系統(tǒng)包括:計(jì)算機(jī)科學(xué)、計(jì)算機(jī)工程、軟件工程、信息系統(tǒng)關(guān)鍵問題:利用計(jì)算機(jī)進(jìn)行信息表示和處理的涉及:關(guān)鍵問題:利用計(jì)算機(jī)進(jìn)行信息表示和處理的涉及:信息的表示信息的表示 信息的處理信息的處理 而信息的表示和組織又直接關(guān)系到處理信息的程序的效率。而信息的表示和組織又直接關(guān)系到處理信息的程序的效率。隨著計(jì)算機(jī)的普及,信息量的增加,信息范圍的拓寬,使許多系隨著計(jì)算機(jī)的普及,信息量的增加,信息范圍的拓寬,使許多系統(tǒng)程序和應(yīng)用程序的規(guī)模很大,結(jié)構(gòu)又相當(dāng)復(fù)雜。因此,為了編統(tǒng)程序和應(yīng)用程序的規(guī)模很大,結(jié)構(gòu)又相當(dāng)復(fù)雜。因此,為了編寫出一個(gè)寫出一個(gè)“好好”的程序,必須分析待處理的對象的特征及各對象
3、的程序,必須分析待處理的對象的特征及各對象之間存在的關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)這門課所要研究的問題。之間存在的關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)這門課所要研究的問題。1.1什么是數(shù)據(jù)結(jié)構(gòu)什么是數(shù)據(jù)結(jié)構(gòu)眾所周知,計(jì)算機(jī)的程序是對信息進(jìn)行處理。在大眾所周知,計(jì)算機(jī)的程序是對信息進(jìn)行處理。在大多數(shù)情況下,這些信息并不是沒有組織的,信息(數(shù)多數(shù)情況下,這些信息并不是沒有組織的,信息(數(shù)據(jù))之間往往具有重要的結(jié)構(gòu)關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)據(jù))之間往往具有重要的結(jié)構(gòu)關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。什么是數(shù)據(jù)結(jié)構(gòu)呢?的內(nèi)容。什么是數(shù)據(jù)結(jié)構(gòu)呢?例子:例子:例例1、電話號(hào)碼查詢系統(tǒng)、電話號(hào)碼查詢系統(tǒng)設(shè)有一個(gè)電話號(hào)碼薄,它記錄了設(shè)有一個(gè)電話號(hào)
4、碼薄,它記錄了N個(gè)人的名字和其個(gè)人的名字和其相應(yīng)的電話號(hào)碼,假定按如下形式安排:相應(yīng)的電話號(hào)碼,假定按如下形式安排:(a1,b1)(a2,b2)(an,bn)其中其中(ai,bi)(i=1,2n)分別表示某人的名字和對應(yīng)分別表示某人的名字和對應(yīng)的電話號(hào)碼。要求設(shè)計(jì)一個(gè)算法,當(dāng)給定任何一個(gè)人的電話號(hào)碼。要求設(shè)計(jì)一個(gè)算法,當(dāng)給定任何一個(gè)人的名字時(shí),該算法能夠打印出此人的電話號(hào)碼,如果的名字時(shí),該算法能夠打印出此人的電話號(hào)碼,如果該電話簿中根本就沒有這個(gè)人,則該算法也能夠報(bào)告該電話簿中根本就沒有這個(gè)人,則該算法也能夠報(bào)告沒有這個(gè)人的信息。沒有這個(gè)人的信息。數(shù)據(jù)結(jié)構(gòu)含義:數(shù)據(jù)結(jié)構(gòu)含義:就是研究數(shù)據(jù)的邏
5、輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而之間相互關(guān)系,并對這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來且確保經(jīng)過這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來的結(jié)構(gòu)類型。的結(jié)構(gòu)類型。所有能所有能被輸入被輸入到計(jì)算機(jī)中,且能被計(jì)算機(jī)到計(jì)算機(jī)中,且能被計(jì)算機(jī)處處理的符號(hào)理的符號(hào)的集合。的集合。數(shù)據(jù)數(shù)據(jù):是是計(jì)算機(jī)操作的對象計(jì)算機(jī)操作的對象的總稱。的總稱。是計(jì)算機(jī)處理的是計(jì)算機(jī)處理的信息的信息的某種特定的符號(hào)某種特定的符號(hào)表示表示形式形式。1.2有關(guān)概念和術(shù)語有關(guān)概念和術(shù)語是數(shù)據(jù)(集合)中的一個(gè)是數(shù)據(jù)(集合)中的一個(gè)“
6、個(gè)體個(gè)體”數(shù)據(jù)元素?cái)?shù)據(jù)元素:是數(shù)據(jù)結(jié)構(gòu)中討論的是數(shù)據(jù)結(jié)構(gòu)中討論的基本基本單位單位數(shù)據(jù)結(jié)構(gòu)主要指邏輯結(jié)構(gòu)和物理結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)主要指邏輯結(jié)構(gòu)和物理結(jié)構(gòu) 數(shù)據(jù)之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。通常數(shù)據(jù)之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。通常分為四類基本結(jié)構(gòu):分為四類基本結(jié)構(gòu):一、一、集合集合 結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一種類型外,別無其它關(guān)系。種類型外,別無其它關(guān)系。二、二、線性結(jié)構(gòu)線性結(jié)構(gòu) 結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對一的關(guān)系。對一的關(guān)系。三、三、樹型結(jié)構(gòu)樹型結(jié)構(gòu) 結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對多的關(guān)系。對多的關(guān)系。四、四、圖狀結(jié)構(gòu)或網(wǎng)
7、狀結(jié)構(gòu)圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu) 結(jié)構(gòu)中的數(shù)據(jù)元素結(jié)構(gòu)中的數(shù)據(jù)元素之間存在多對多的關(guān)系。之間存在多對多的關(guān)系。一個(gè)數(shù)據(jù)元素可由若干個(gè)數(shù)據(jù)項(xiàng)組成。一個(gè)數(shù)據(jù)元素可由若干個(gè)數(shù)據(jù)項(xiàng)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)對象數(shù)據(jù)對象(DataObject):是性質(zhì)相同的數(shù)據(jù)是性質(zhì)相同的數(shù)據(jù)元素的集合。是數(shù)據(jù)的一個(gè)子集。元素的集合。是數(shù)據(jù)的一個(gè)子集。數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(DataStructure):是相互之間存在是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)在計(jì)算機(jī)中的表示稱為數(shù)據(jù)的數(shù)據(jù)在計(jì)算機(jī)中的表示稱為數(shù)據(jù)的物理物理結(jié)構(gòu)結(jié)構(gòu),又
8、稱為,又稱為存儲(chǔ)結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)對象可以是有限的,也可以是無限的。數(shù)據(jù)對象可以是有限的,也可以是無限的。數(shù)據(jù)結(jié)構(gòu)不同于數(shù)據(jù)類型,也不同于數(shù)據(jù)對數(shù)據(jù)結(jié)構(gòu)不同于數(shù)據(jù)類型,也不同于數(shù)據(jù)對象,它不僅要描述數(shù)據(jù)類型的數(shù)據(jù)對象,而且象,它不僅要描述數(shù)據(jù)類型的數(shù)據(jù)對象,而且要描述數(shù)據(jù)對象各元素之間的相互關(guān)系。要描述數(shù)據(jù)對象各元素之間的相互關(guān)系。數(shù)據(jù)類型數(shù)據(jù)類型:在一種程序設(shè)計(jì)語言中,變量所具有的數(shù):在一種程序設(shè)計(jì)語言中,變量所具有的數(shù)據(jù)種類。據(jù)種類。例例1、在在FORTRAN語言中,變量的數(shù)據(jù)類型有整型、語言中,變量的數(shù)據(jù)類型有整型、實(shí)型、和復(fù)數(shù)型實(shí)型、和復(fù)數(shù)型例例2、在、在C+語言中語言中數(shù)據(jù)類型:基本
9、類型和構(gòu)造類型數(shù)據(jù)類型:基本類型和構(gòu)造類型基本類型:整型、浮點(diǎn)型、字符型基本類型:整型、浮點(diǎn)型、字符型構(gòu)造類型:數(shù)組、結(jié)構(gòu)、聯(lián)合、指針、枚舉型、自定構(gòu)造類型:數(shù)組、結(jié)構(gòu)、聯(lián)合、指針、枚舉型、自定義義數(shù)據(jù)對象數(shù)據(jù)對象:某種數(shù)據(jù)類型元素的集合。:某種數(shù)據(jù)類型元素的集合。例例3、整數(shù)的數(shù)據(jù)對象是、整數(shù)的數(shù)據(jù)對象是-3,-2,-1,0,1,2,3,英文字符類型的數(shù)據(jù)對象是英文字符類型的數(shù)據(jù)對象是A,B,C,D,E,F(xiàn),1.3算法和算法分析算法和算法分析1.3.1算法:算法:是對特定問題求解步驟的一種描述,是指令的有限序列,其中是對特定問題求解步驟的一種描述,是指令的有限序列,其中每一條指令表示一個(gè)或多
10、個(gè)操作。每一條指令表示一個(gè)或多個(gè)操作。算法具有以下五個(gè)特性:算法具有以下五個(gè)特性:(1)有窮性有窮性一個(gè)算法必須總是在執(zhí)行有窮步之后結(jié)束,且每一個(gè)算法必須總是在執(zhí)行有窮步之后結(jié)束,且每一步都在有窮時(shí)間內(nèi)完成。一步都在有窮時(shí)間內(nèi)完成。(2)確定性確定性算法中每一條指令必須有確切的含義。不存在二義算法中每一條指令必須有確切的含義。不存在二義性。性。(3)可行性可行性一個(gè)算法是可行的。即算法描述的操作都是可以通一個(gè)算法是可行的。即算法描述的操作都是可以通過已經(jīng)實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次來實(shí)現(xiàn)的。過已經(jīng)實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次來實(shí)現(xiàn)的。(4)輸入輸入一個(gè)算法有零個(gè)或多個(gè)輸入,這些輸入取自于某個(gè)特一個(gè)算法
11、有零個(gè)或多個(gè)輸入,這些輸入取自于某個(gè)特定的對象集合。定的對象集合。(5)輸出輸出一個(gè)算法有一個(gè)或多個(gè)輸出,這些輸出是同輸入有著一個(gè)算法有一個(gè)或多個(gè)輸出,這些輸出是同輸入有著某些特定關(guān)系的量。某些特定關(guān)系的量。1.3.2算法設(shè)計(jì)的要求算法設(shè)計(jì)的要求設(shè)計(jì)算法時(shí),通常應(yīng)考慮達(dá)到以下目標(biāo):設(shè)計(jì)算法時(shí),通常應(yīng)考慮達(dá)到以下目標(biāo):1、正確性、正確性2、可讀性、可讀性3、健壯性、健壯性4、高效率與低存儲(chǔ)量需求、高效率與低存儲(chǔ)量需求1正確性正確性首先,首先,算法應(yīng)當(dāng)滿足以特定的算法應(yīng)當(dāng)滿足以特定的“規(guī)格說規(guī)格說明明”方式給出的需求。方式給出的需求。其次,其次,對算法是否對算法是否“正確正確”的理解可以的理解可以
12、有以下四個(gè)層次:有以下四個(gè)層次:a程序中不含語法錯(cuò)誤;程序中不含語法錯(cuò)誤;b程序?qū)τ趲捉M輸入數(shù)據(jù)能夠得出程序?qū)τ趲捉M輸入數(shù)據(jù)能夠得出滿足要求的結(jié)果;滿足要求的結(jié)果;c程序?qū)τ诰倪x擇的、典型、苛刻且程序?qū)τ诰倪x擇的、典型、苛刻且?guī)в械箅y性的幾組輸入數(shù)據(jù)能夠得出滿足帶有刁難性的幾組輸入數(shù)據(jù)能夠得出滿足要求的結(jié)果;要求的結(jié)果;通常以通常以第第c層層意義的正確性作為衡意義的正確性作為衡量一個(gè)算法是否合格的標(biāo)準(zhǔn)。量一個(gè)算法是否合格的標(biāo)準(zhǔn)。d程序?qū)τ谝磺泻戏ǖ妮斎霐?shù)據(jù)都能得出程序?qū)τ谝磺泻戏ǖ妮斎霐?shù)據(jù)都能得出滿足要求的結(jié)果;滿足要求的結(jié)果;2.2.可讀性可讀性 算法主要是為了人的閱讀與交流,算法主要是
13、為了人的閱讀與交流,其次才是為計(jì)算機(jī)執(zhí)行,因此算法應(yīng)該其次才是為計(jì)算機(jī)執(zhí)行,因此算法應(yīng)該易易于人的理解于人的理解;另一方面,晦澀難讀的程序;另一方面,晦澀難讀的程序易于隱藏較多錯(cuò)誤而難以調(diào)試。易于隱藏較多錯(cuò)誤而難以調(diào)試。3 3健壯性健壯性 當(dāng)當(dāng)輸入的數(shù)據(jù)非法輸入的數(shù)據(jù)非法時(shí),算法應(yīng)當(dāng)恰當(dāng)時(shí),算法應(yīng)當(dāng)恰當(dāng)?shù)刈鞒龇从郴虻刈鞒龇从郴蜻M(jìn)行相應(yīng)處理進(jìn)行相應(yīng)處理,而不是產(chǎn),而不是產(chǎn)生莫名奇妙的輸出結(jié)果。并且,處理出生莫名奇妙的輸出結(jié)果。并且,處理出錯(cuò)的方法不應(yīng)是中斷程序的執(zhí)行,而應(yīng)錯(cuò)的方法不應(yīng)是中斷程序的執(zhí)行,而應(yīng)是返回一個(gè)表示錯(cuò)誤或錯(cuò)誤性質(zhì)的值,是返回一個(gè)表示錯(cuò)誤或錯(cuò)誤性質(zhì)的值,以便在更高的抽象層次上進(jìn)
14、行處理。以便在更高的抽象層次上進(jìn)行處理。4 4高效率與低存儲(chǔ)量需求高效率與低存儲(chǔ)量需求通常,效率指的是通常,效率指的是算法執(zhí)行時(shí)間算法執(zhí)行時(shí)間;存儲(chǔ)量指的是算法執(zhí)行過程中存儲(chǔ)量指的是算法執(zhí)行過程中所需的所需的最大存儲(chǔ)空間最大存儲(chǔ)空間,兩者都與問題的規(guī)模,兩者都與問題的規(guī)模有關(guān)。有關(guān)。1.3.3算法效率的度量算法效率的度量通常有兩種衡量算法效率的方法通常有兩種衡量算法效率的方法:事后統(tǒng)計(jì)法事后統(tǒng)計(jì)法事前分析估算法事前分析估算法缺點(diǎn):缺點(diǎn):1必須執(zhí)行程序必須執(zhí)行程序2其它因素掩蓋算法本質(zhì)其它因素掩蓋算法本質(zhì)和算法執(zhí)行時(shí)間相關(guān)的因素:和算法執(zhí)行時(shí)間相關(guān)的因素:1算法選用的策略算法選用的策略2問題的規(guī)
15、模問題的規(guī)模3編寫程序的語言編寫程序的語言4編譯程序產(chǎn)生的機(jī)器代碼的質(zhì)量編譯程序產(chǎn)生的機(jī)器代碼的質(zhì)量5計(jì)算機(jī)執(zhí)行指令的速度計(jì)算機(jī)執(zhí)行指令的速度 一個(gè)特定一個(gè)特定算法的算法的“運(yùn)行工作量運(yùn)行工作量”的大小,只依賴于的大小,只依賴于問題的規(guī)模問題的規(guī)模(通常用整數(shù)量(通常用整數(shù)量n表示),或者說,表示),或者說,它是問題規(guī)模的函數(shù)。它是問題規(guī)模的函數(shù)。假如,隨著問題規(guī)模假如,隨著問題規(guī)模 n的增長,的增長,算法執(zhí)行時(shí)間的增長率和算法執(zhí)行時(shí)間的增長率和 f(n)的增長的增長率相同,則可記作:率相同,則可記作:T(n)=O(f(n)稱稱T(n)為算法的為算法的(漸近漸近)時(shí)間復(fù)雜度。時(shí)間復(fù)雜度。如何估
16、算如何估算 算法的時(shí)間復(fù)雜度?算法的時(shí)間復(fù)雜度?算法算法=控制結(jié)構(gòu)控制結(jié)構(gòu)+原操作原操作(固有數(shù)據(jù)類型的操作)(固有數(shù)據(jù)類型的操作)算法的執(zhí)行時(shí)間算法的執(zhí)行時(shí)間=原操作原操作(i)的執(zhí)行次數(shù)的執(zhí)行次數(shù)原操作原操作(i)的執(zhí)行時(shí)間的執(zhí)行時(shí)間算法的執(zhí)行時(shí)間算法的執(zhí)行時(shí)間 與與 原操作執(zhí)行次數(shù)之和原操作執(zhí)行次數(shù)之和 成正比成正比 從算法中選取一種對于所研究的從算法中選取一種對于所研究的問題來說是問題來說是 基本操作基本操作 的原操作,以的原操作,以該基本操作該基本操作 在算法中重復(fù)執(zhí)行的次在算法中重復(fù)執(zhí)行的次數(shù)數(shù) 作為算法運(yùn)行時(shí)間的衡量準(zhǔn)則。作為算法運(yùn)行時(shí)間的衡量準(zhǔn)則。voidmult(int a,
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 數(shù)據(jù)結(jié)構(gòu) 程序員 必須 課件