版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
主教材
王紅梅.數(shù)據(jù)結(jié)構(gòu)(C++版).清華大學(xué)出版社
輔導(dǎo)及實驗教材
王紅梅.數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)輔導(dǎo)與實驗指導(dǎo).清華大學(xué)出版社
參考教材
1.嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社.1997
2.王曉東.數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計.電子工業(yè)出版社.2002
3.曹宏慶譯.如何求解問題.中國水利水電出版社.2003關(guān)于教材主教材
王紅梅.數(shù)據(jù)結(jié)構(gòu)(C++版).清華大學(xué)出版社
輔導(dǎo)及1課程性質(zhì)數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)的專業(yè)基礎(chǔ)課
公共基礎(chǔ)課、專業(yè)基礎(chǔ)課、專業(yè)方向課、專業(yè)選修課在教學(xué)計劃中的地位:核心、承上啟下
前導(dǎo)課:高等數(shù)學(xué)、離散數(shù)學(xué)、程序設(shè)計語言后續(xù)課:數(shù)據(jù)庫、操作系統(tǒng)、編譯原理……屬于武術(shù)中的“練功”科目
“練武不練功,到頭一場空”考研課程性質(zhì)數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)的專業(yè)基礎(chǔ)課2學(xué)習(xí)目標(biāo)掌握基本的數(shù)據(jù)結(jié)構(gòu)
工具箱→復(fù)用、修改、重組培養(yǎng)算法設(shè)計能力、程序設(shè)計能力
算法——程序的靈魂問題求解過程:問題→想法→算法→程序程序設(shè)計研究的層次:算法→方法學(xué)→語言→工具培養(yǎng)算法分析能力
評價算法、改進算法學(xué)習(xí)目標(biāo)掌握基本的數(shù)據(jù)結(jié)構(gòu)3學(xué)習(xí)要求循序漸進,切忌心浮氣躁提高課外學(xué)習(xí)的時間和內(nèi)容理解科學(xué)而不是背誦科學(xué)→讀書正確對待考試作習(xí)題
華羅庚:“學(xué)數(shù)學(xué)不做習(xí)題等于入寶山而空返”
作實驗
計算機學(xué)科是一門科學(xué)性與工程性并重的學(xué)科,表現(xiàn)為理論和實踐緊密結(jié)合的特征。
學(xué)習(xí)要求循序漸進,切忌心浮氣躁4如何使用立體化教材主教材思想火花、人物小傳輔導(dǎo)教材知識結(jié)構(gòu)、學(xué)習(xí)要點、重點難點釋疑、習(xí)題解析實驗教材
驗證實驗→綜合實驗→設(shè)計實驗網(wǎng)站學(xué)校精品課程網(wǎng)站如何使用立體化教材主教材5成績組成實驗成績
30%:出勤+程序+報告期末考試成績
70%:接近同類學(xué)??佳兴秸n程設(shè)計成績:優(yōu)、良、中、及、不及成績組成實驗成績6第1章緒論數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展數(shù)據(jù)結(jié)構(gòu)的研究對象
數(shù)據(jù)結(jié)構(gòu)的基本概念算法及算法分析本章的基本內(nèi)容是:第1章緒論數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展本章的基本內(nèi)容是:71938年出生,25歲畢業(yè)于加州理工學(xué)院數(shù)學(xué)系,博士畢業(yè)后留校任教,28歲任副教授。30歲時,加盟斯坦福大學(xué)計算機系,任教授。從31歲起,開始出版他的歷史性經(jīng)典巨著:TheArtofComputerProgramming他計劃共寫7卷,然而出版三卷之后,已震驚世界,使他獲得計算機科學(xué)界的最高榮譽圖靈獎,此時,他年僅36歲。數(shù)據(jù)結(jié)構(gòu)的創(chuàng)始人——克努特1938年出生,25歲畢業(yè)于加州理工學(xué)院數(shù)學(xué)系,博士畢業(yè)后留81.1數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展
程序設(shè)計的實質(zhì)是什么?數(shù)據(jù)表示:將數(shù)據(jù)存儲在計算機中數(shù)據(jù)處理:處理數(shù)據(jù),求解問題數(shù)據(jù)結(jié)構(gòu)問題起源于程序設(shè)計
1.1數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展程序設(shè)計的實質(zhì)是什么?數(shù)據(jù)表9數(shù)據(jù)結(jié)構(gòu)隨著程序設(shè)計的發(fā)展而發(fā)展數(shù)據(jù)結(jié)構(gòu)的發(fā)展并未終結(jié)1.無結(jié)構(gòu)階段2.結(jié)構(gòu)化階段:數(shù)據(jù)結(jié)構(gòu)+算法=程序3.面向?qū)ο箅A段:(數(shù)據(jù)結(jié)構(gòu)+算法)=程序1.1數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展
數(shù)據(jù)結(jié)構(gòu)隨著程序設(shè)計的發(fā)展而發(fā)展數(shù)據(jù)結(jié)構(gòu)的發(fā)展并未終結(jié)1101.2數(shù)據(jù)結(jié)構(gòu)的研究對象計算機求解問題:
問題→抽象出問題的模型→求模型的解問題——數(shù)值問題、非數(shù)值問題
數(shù)值問題→數(shù)學(xué)方程非數(shù)值問題→數(shù)據(jù)結(jié)構(gòu)1.2數(shù)據(jù)結(jié)構(gòu)的研究對象計算機求解問題:11例1學(xué)籍管理問題——表結(jié)構(gòu)學(xué)號姓名性別出生日期政治面貌0001王軍男1983/09/02團員0002李明男1982/12/25黨員0003湯曉影女1984/03/26團員……………1.2數(shù)據(jù)結(jié)構(gòu)的研究對象完成什么功能?各表項之間是什么關(guān)系?例1學(xué)籍管理問題——表結(jié)構(gòu)學(xué)號姓名性別出生日期政治面貌12例2人機對弈問題——樹結(jié)構(gòu)1.2數(shù)據(jù)結(jié)構(gòu)的研究對象如何實現(xiàn)對弈?各格局之間是什么關(guān)系?…………..……..………...……例2人機對弈問題——樹結(jié)構(gòu)1.2數(shù)據(jù)結(jié)構(gòu)的研究對象13例3教學(xué)計劃編排問題——圖結(jié)構(gòu)C4,C5,C6數(shù)據(jù)庫原理C7C2,
C4計算機原理C6C3,C4數(shù)據(jù)結(jié)構(gòu)C5C1,C2程序設(shè)計C4C1離散數(shù)學(xué)C3無計算機導(dǎo)論C2無高等數(shù)學(xué)C1先修課課程名稱編號1.2數(shù)據(jù)結(jié)構(gòu)的研究對象C1C2C3C4C6C5C7如何表示課程之間的先修關(guān)系?例3教學(xué)計劃編排問題——圖結(jié)構(gòu)C4,C5,C6數(shù)據(jù)庫14數(shù)據(jù)結(jié)構(gòu)是研究非數(shù)值問題中計算機的操作對象以及它們之間的關(guān)系和操作的學(xué)科。1.2數(shù)據(jù)結(jié)構(gòu)的研究對象數(shù)據(jù)結(jié)構(gòu)是研究非數(shù)值問題中計算機的操作對象以及它們之151.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù):所有能輸入到計算機中并能被計算機程序識別和處理的符號集合。數(shù)值數(shù)據(jù):整數(shù)、實數(shù)等非數(shù)值數(shù)據(jù):圖形、圖象、聲音、文字等
數(shù)據(jù)元素:數(shù)據(jù)的基本單位,在計算機程序中通常作為一個整體進行考慮和處理。數(shù)據(jù)項:構(gòu)成數(shù)據(jù)元素的不可分割的最小單位。數(shù)據(jù)對象:具有相同性質(zhì)的數(shù)據(jù)元素的集合。
數(shù)據(jù)結(jié)構(gòu)的基本概念1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù):所有能輸入到計算機中并能被16數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項之間的關(guān)系包含關(guān)系:數(shù)據(jù)是由數(shù)據(jù)元素組成,數(shù)據(jù)元素是由數(shù)據(jù)項組成。數(shù)據(jù)元素是討論數(shù)據(jù)結(jié)構(gòu)時涉及的最小數(shù)據(jù)單位,其中的數(shù)據(jù)項一般不予考慮。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項之間的關(guān)系包含關(guān)系:數(shù)據(jù)是由數(shù)據(jù)元素組17數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不同,數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。邏輯結(jié)構(gòu):指數(shù)據(jù)元素之間邏輯關(guān)系的整體。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念關(guān)聯(lián)方式或鄰接關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)是從具體問題抽象出來的數(shù)據(jù)模型學(xué)籍管理問題中,表項之間的邏輯關(guān)系指的是什么?人機對弈問題中,格局之間的邏輯關(guān)系指的是什么?教學(xué)計劃編排問題中,課程之間的邏輯關(guān)系指的是什么?數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不18數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不同,數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。邏輯結(jié)構(gòu):指數(shù)據(jù)元素之間邏輯關(guān)系的整體。存儲結(jié)構(gòu):又稱為物理結(jié)構(gòu),是數(shù)據(jù)及其邏輯結(jié)構(gòu)在計算機中的表示。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念內(nèi)存存儲結(jié)構(gòu)實質(zhì)上是內(nèi)存分配,在具體實現(xiàn)時,依賴于計算機語言。數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不19數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)20數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;⑵線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對一的線性關(guān)系;1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)21數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;⑵線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對一的線性關(guān)系;⑶樹結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對多的層次關(guān)系;1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)22數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;⑵線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對一的線性關(guān)系;⑶樹結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對多的層次關(guān)系;⑷圖結(jié)構(gòu):數(shù)據(jù)元素之間存在著多對多的任意關(guān)系。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)23通常有兩種存儲結(jié)構(gòu):1.順序存儲結(jié)構(gòu):用一組連續(xù)的存儲單元依次存儲數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系由元素的存儲位置來表示?!璪atcateat…起始地址例:(bat,cat,eat)1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念通常有兩種存儲結(jié)構(gòu):…起始地址例:(bat,cat,ea24通常有兩種存儲結(jié)構(gòu):1.順序存儲結(jié)構(gòu):用一組連續(xù)的存儲單元依次存儲數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系由元素的存儲位置來表示。2.鏈接存儲結(jié)構(gòu):用一組任意的存儲單元存儲數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系用指針來表示。例:(bat,cat,eat)1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念0200020803000325…………bat0200cat0325eat∧通常有兩種存儲結(jié)構(gòu):例:(bat,cat,eat)1.325邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)之間的關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)屬于用戶視圖,是面向問題的,反映了數(shù)據(jù)內(nèi)部的構(gòu)成方式;數(shù)據(jù)的存儲結(jié)構(gòu)屬于具體實現(xiàn)的視圖,是面向計算機的。一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以用多種存儲結(jié)構(gòu)來存儲,而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率往往是不同的。
1.3數(shù)據(jù)結(jié)構(gòu)的基本概念邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)之間的關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)屬于用戶視圖,是26數(shù)據(jù)結(jié)構(gòu)的訪問接口對數(shù)據(jù)結(jié)構(gòu)的訪問是指對數(shù)據(jù)的讀取、修改、加工、處理等操作。數(shù)據(jù)結(jié)構(gòu)的基本操作:各種應(yīng)用都能通過這些操作實現(xiàn)對數(shù)據(jù)結(jié)構(gòu)的各種訪問?;静僮鞯奶匦裕撼橄笮?、基本性、完備性、一般性訪問接口:操作的調(diào)用形式與規(guī)范(例如形參表、返回類型等)。數(shù)據(jù)結(jié)構(gòu)的訪問接口:數(shù)據(jù)結(jié)構(gòu)基本操作接口的全體。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的訪問接口對數(shù)據(jù)結(jié)構(gòu)的訪問是指對數(shù)據(jù)的讀取、修改、加27抽象數(shù)據(jù)類型1.數(shù)據(jù)類型(DataType):一組值的集合以及定義于這個值集上的一組操作的總稱。
例如:C++中的整型變量
2.抽象(Abstract):抽出問題本質(zhì)的特征而忽略非本質(zhì)的細節(jié)。
例如:地圖、駕駛汽車3.抽象數(shù)據(jù)類型(AbstractDataType,ADT):一個數(shù)據(jù)結(jié)構(gòu)以及定義在該結(jié)構(gòu)上的一組操作的總稱。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念抽象數(shù)據(jù)類型1.數(shù)據(jù)類型(DataType):一組值的集28ADT是對數(shù)據(jù)類型的進一步抽象ADT·邏輯結(jié)構(gòu)·操作集合數(shù)據(jù)結(jié)構(gòu)·存儲結(jié)構(gòu)·算法設(shè)計類·成員變量·成員函數(shù)(a)使用視圖(b)設(shè)計視圖(c)實現(xiàn)視圖ADT的定義ADT的設(shè)計ADT的實現(xiàn)
ADT的不同視圖1.3數(shù)據(jù)結(jié)構(gòu)的基本概念A(yù)DT是對數(shù)據(jù)類型的進一步抽象ADT數(shù)據(jù)結(jié)構(gòu)類(a)使用視29ADT抽象數(shù)據(jù)類型名Data數(shù)據(jù)元素之間邏輯關(guān)系的定義Operation
操作1
前置條件:執(zhí)行此操作前數(shù)據(jù)所必須的狀態(tài)
輸入:執(zhí)行此操作所需要的輸入
功能:該操作將完成的功能
輸出:執(zhí)行該操作后產(chǎn)生的輸出
后置條件:執(zhí)行該操作后數(shù)據(jù)的狀態(tài)操作2
…………操作n……endADT
ADT的定義形式1.3數(shù)據(jù)結(jié)構(gòu)的基本概念A(yù)DT抽象數(shù)據(jù)類型名ADT的定義形式1.3數(shù)據(jù)結(jié)構(gòu)的基301.3數(shù)據(jù)結(jié)構(gòu)的基本概念(小結(jié))數(shù)據(jù)的操作:插入、刪除、修改、檢索、排序等數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的存儲結(jié)構(gòu)順序存儲鏈?zhǔn)酱鎯暇€性結(jié)構(gòu)樹結(jié)構(gòu)圖結(jié)構(gòu)非數(shù)值問題數(shù)據(jù)表示1.3數(shù)據(jù)結(jié)構(gòu)的基本概念(小結(jié))數(shù)據(jù)的操作:插入、刪除、修31算法的相關(guān)概念1.算法(Algorithm):是對特定問題求解步驟的一種描述,是指令的有限序列。2.
算法的五大特性:⑴
輸入:一個算法有零個或多個輸入。⑵輸出:一個算法有一個或多個輸出。⑶有窮性:一個算法必須總是在執(zhí)行有窮步之后結(jié)束,且每一步都在有窮時間內(nèi)完成。⑷確定性:算法中的每一條指令必須有確切的含義,對于相同的輸入只能得到相同的輸出。⑸可行性:算法描述的操作可以通過已經(jīng)實現(xiàn)的基本操作執(zhí)行有限次來實現(xiàn)。1.4算法及算法分析算法的相關(guān)概念1.算法(Algorithm):是對特定問題求32歐幾里德算法mnr例:歐幾里德算法——輾轉(zhuǎn)相除法求兩個自然數(shù)m
和n
的最大公約數(shù)1.4算法及算法分析mnr例:歐幾里德算法——輾轉(zhuǎn)相除法求兩個自然數(shù)m和n33算法的描述方法——自然語言優(yōu)點:容易理解缺點:冗長、二義性使用方法:粗線條描述算法思想
注意事項:避免寫成自然段1.4算法及算法分析算法的描述方法——自然語言優(yōu)點:容易理解1.4算法及算34①輸入m
和n;②求m除以n的余數(shù)r;③若r等于0,則n為最大公約數(shù),算法結(jié)束;否則執(zhí)行第④步;④將n的值放在m中,將r的值放在n中;⑤重新執(zhí)行第②步。例:歐幾里德算法自然語言1.4算法及算法分析①輸入m和n;例:歐幾里德算法自然語言1.4算法及算35優(yōu)點:流程直觀缺點:缺少嚴(yán)密性、靈活性使用方法:描述簡單算法注意事項:注意抽象層次算法的描述方法——流程圖1.4算法及算法分析優(yōu)點:流程直觀算法的描述方法——流程圖1.4算法及算36N開始輸入m和n
r=m%nr=0m=n;n=r輸出n結(jié)束Y流程圖例:歐幾里德算法1.4算法及算法分析N開始輸入m和nr=m%nr=0m=n;n=r37優(yōu)點:能由計算機執(zhí)行缺點:抽象性差,對語言要求高使用方法:算法需要驗證注意事項:將算法寫成子函數(shù)算法的描述方法——程序設(shè)計語言1.4算法及算法分析優(yōu)點:能由計算機執(zhí)行算法的描述方法——程序設(shè)計語言1.438#include<iostream.h>intCommonFactor(intm,intn){intr=m%n;while(r!=0){m=n;n=r;r=m%n;}returnn;}voidmain(){cout<<CommonFactor(63,54)<<endl;}程序設(shè)計語言例:歐幾里德算法1.4算法及算法分析#include<iostream.h>程序設(shè)計語言例:歐394算法及算法分析4算法及算法分析40偽代碼(Pseudocode):介于自然語言和程序設(shè)計語言之間的方法,它采用某一程序設(shè)計語言的基本語法,操作指令可以結(jié)合自然語言來設(shè)計。優(yōu)點:表達能力強,抽象性強,容易理解算法的描述方法——偽代碼1.4算法及算法分析偽代碼(Pseudocode):介于自然語言和程序設(shè)計語言之411.r=m%n;2.循環(huán)直到r等于02.1m=n;2.2n=r;2.3r=m%n;3.輸出n;偽代碼上述偽代碼再具體一些,用C++的函數(shù)來描述。請同學(xué)們自行完成!例:歐幾里德算法1.4算法及算法分析1.r=m%n;偽代碼上述偽代碼再具體42算法分析度量算法效率的方法:
事后統(tǒng)計:將算法實現(xiàn),測算其時間和空間開銷。
缺點:⑴編寫程序?qū)崿F(xiàn)算法將花費較多的時間和精力;⑵所得實驗結(jié)果依賴于計算機的軟硬件等環(huán)境因素。
事前分析:對算法所消耗資源的一種估算方法。1.4算法及算法分析算法分析度量算法效率的方法:1.4算法及算法分析43算法分析算法分析(AlgorithmAnalysis):對算法所需要的計算機資源——時間和空間進行估算。時間復(fù)雜性(TimeComplexity)空間復(fù)雜性(SpaceComplexity)1.4算法及算法分析算法分析算法分析(AlgorithmAnalysis):對44算法的時間復(fù)雜度分析1.4算法及算法分析算法分析算法的執(zhí)行時間=每條語句執(zhí)行時間之和執(zhí)行次數(shù)×執(zhí)行一次的時間指令系統(tǒng)、編譯的代碼質(zhì)量單位時間每條語句執(zhí)行次數(shù)之和for(i=1;i<=n;i++)for(j=1;j<=n;j++)x++;基本語句的執(zhí)行次數(shù)算法的時間復(fù)雜度分析1.4算法及算法分析算法分析算法的執(zhí)45問題規(guī)模:輸入量的多少。基本語句:是執(zhí)行次數(shù)與整個算法的執(zhí)行次數(shù)成正比的操作指令。for(i=1;i<=n;i++)for(j=1;j<=n;j++)x++;問題規(guī)模:n基本語句:x++1.4算法及算法分析算法分析問題規(guī)模:輸入量的多少。for(i=1;i<=n;i+46定義
若存在兩個正的常數(shù)c和n0,對于任意n≥n0,都有T(n)≤c×f(n),則稱T(n)=O(f(n))n0問題規(guī)模n執(zhí)行次數(shù)n0之前的情況無關(guān)緊要T(n)c×f(n)當(dāng)問題規(guī)模充分大時在漸近意義下的階1.4算法及算法分析算法分析——大O符號定義若存在兩個正的常數(shù)c和n0,對于任意n≥n0,都有T47定理:若A(n)=amnm+am-1nm-1++a1n+a0是一個m次多項式,則A(n)=O(nm)。說明:在計算算法時間復(fù)雜度時,可以忽略所有低次冪和最高次冪的系數(shù)。1.4算法及算法分析算法分析——大O符號定理:若A(n)=amnm+am-1nm-1++a1n+a48例1-5
++x;例1-6
for(i=1;i<=n;++i)++x;例1-7for(i=1;i<=n;++i)for(j=1;j<=n;++j)++x;
例1-8for(i=1;i<=n;++i)for(j=1;j<=i-1;++j)++x;1.4算法及算法分析算法分析例1-5++x;1.4算法及算法分析算法分析49例1-9for(i=1;i<=n;++i)for(j=1;j<=n;++j){c[i][j]=0;for(k=1;k<=n;++k)c[i][j]+=a[i][k]*b[k][j];}例1-10for(i=1;i<=n;i=2*i) ++x;Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)1.4算法及算法分析算法分析例1-9for(i=1;i<=n;++i)Ο(150最好情況、最壞情況、平均情況例:在一維整型數(shù)組A[n]中順序查找與給定值k相等的元素(假設(shè)該數(shù)組中有且僅有一個元素值為k)。
intFind(intA[],intn)
{for(i=0;i<n;i++)if(A[i]==k)break;returni; }1.4算法及算法分析基本語句的執(zhí)行次數(shù)是否只和問題規(guī)模有關(guān)?最好情況、最壞情況、平均情況例:在一維整型數(shù)組A[n]中順序51最好情況:出現(xiàn)概率較大時分析最差情況:實時系統(tǒng)平均情況:已知輸入數(shù)據(jù)是如何分布的,通常假設(shè)等概率分布結(jié)論:如果問題規(guī)模相同,時間代價與輸入數(shù)據(jù)有關(guān),則需要分析最好情況、最壞情況、平均情況。1.4算法及算法分析最好情況、最壞情況、平均情況最好情況:出現(xiàn)概率較大時分析結(jié)論:如果問題規(guī)模相同,時間代價52本章小結(jié)——知識結(jié)構(gòu)圖緒論數(shù)據(jù)結(jié)構(gòu)算法基本概念邏輯結(jié)構(gòu)存儲結(jié)構(gòu)⑴數(shù)據(jù)⑵數(shù)據(jù)元素⑶數(shù)據(jù)對象⑷ADT⑴邏輯結(jié)構(gòu)⑵數(shù)據(jù)結(jié)構(gòu)的分類⑴存儲結(jié)構(gòu)⑵常用存儲方法基本概念算法分析⑴算法⑵算法特性⑶評價算法⑷描述算法⑴問題規(guī)模⑵基本語句⑶時間復(fù)雜度⑷大O記號關(guān)系本章小結(jié)——知識結(jié)構(gòu)圖緒論數(shù)據(jù)結(jié)構(gòu)算法基本概念邏輯結(jié)53作業(yè):公元5世紀(jì)末,我國古代數(shù)學(xué)家張丘建在它所撰定的《算經(jīng)》中,提出這樣一個問題:“雞翁一,值錢五;雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問雞翁、母、雛各幾何?”意思是說公雞每只5元,母雞每只3元,小雞3只1元,用100元錢買100只雞,求公雞、母雞、小雞的只數(shù)。試設(shè)計算法求解該問題,并分析你所設(shè)計的算法的時間復(fù)雜度。(要求:算法分別用偽代碼和C++描述)作業(yè):公元5世紀(jì)末,我國古代數(shù)學(xué)家張丘建在它所撰定的《算經(jīng)》54主教材
王紅梅.數(shù)據(jù)結(jié)構(gòu)(C++版).清華大學(xué)出版社
輔導(dǎo)及實驗教材
王紅梅.數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)輔導(dǎo)與實驗指導(dǎo).清華大學(xué)出版社
參考教材
1.嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社.1997
2.王曉東.數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計.電子工業(yè)出版社.2002
3.曹宏慶譯.如何求解問題.中國水利水電出版社.2003關(guān)于教材主教材
王紅梅.數(shù)據(jù)結(jié)構(gòu)(C++版).清華大學(xué)出版社
輔導(dǎo)及55課程性質(zhì)數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)的專業(yè)基礎(chǔ)課
公共基礎(chǔ)課、專業(yè)基礎(chǔ)課、專業(yè)方向課、專業(yè)選修課在教學(xué)計劃中的地位:核心、承上啟下
前導(dǎo)課:高等數(shù)學(xué)、離散數(shù)學(xué)、程序設(shè)計語言后續(xù)課:數(shù)據(jù)庫、操作系統(tǒng)、編譯原理……屬于武術(shù)中的“練功”科目
“練武不練功,到頭一場空”考研課程性質(zhì)數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)的專業(yè)基礎(chǔ)課56學(xué)習(xí)目標(biāo)掌握基本的數(shù)據(jù)結(jié)構(gòu)
工具箱→復(fù)用、修改、重組培養(yǎng)算法設(shè)計能力、程序設(shè)計能力
算法——程序的靈魂問題求解過程:問題→想法→算法→程序程序設(shè)計研究的層次:算法→方法學(xué)→語言→工具培養(yǎng)算法分析能力
評價算法、改進算法學(xué)習(xí)目標(biāo)掌握基本的數(shù)據(jù)結(jié)構(gòu)57學(xué)習(xí)要求循序漸進,切忌心浮氣躁提高課外學(xué)習(xí)的時間和內(nèi)容理解科學(xué)而不是背誦科學(xué)→讀書正確對待考試作習(xí)題
華羅庚:“學(xué)數(shù)學(xué)不做習(xí)題等于入寶山而空返”
作實驗
計算機學(xué)科是一門科學(xué)性與工程性并重的學(xué)科,表現(xiàn)為理論和實踐緊密結(jié)合的特征。
學(xué)習(xí)要求循序漸進,切忌心浮氣躁58如何使用立體化教材主教材思想火花、人物小傳輔導(dǎo)教材知識結(jié)構(gòu)、學(xué)習(xí)要點、重點難點釋疑、習(xí)題解析實驗教材
驗證實驗→綜合實驗→設(shè)計實驗網(wǎng)站學(xué)校精品課程網(wǎng)站如何使用立體化教材主教材59成績組成實驗成績
30%:出勤+程序+報告期末考試成績
70%:接近同類學(xué)校考研水平課程設(shè)計成績:優(yōu)、良、中、及、不及成績組成實驗成績60第1章緒論數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展數(shù)據(jù)結(jié)構(gòu)的研究對象
數(shù)據(jù)結(jié)構(gòu)的基本概念算法及算法分析本章的基本內(nèi)容是:第1章緒論數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展本章的基本內(nèi)容是:611938年出生,25歲畢業(yè)于加州理工學(xué)院數(shù)學(xué)系,博士畢業(yè)后留校任教,28歲任副教授。30歲時,加盟斯坦福大學(xué)計算機系,任教授。從31歲起,開始出版他的歷史性經(jīng)典巨著:TheArtofComputerProgramming他計劃共寫7卷,然而出版三卷之后,已震驚世界,使他獲得計算機科學(xué)界的最高榮譽圖靈獎,此時,他年僅36歲。數(shù)據(jù)結(jié)構(gòu)的創(chuàng)始人——克努特1938年出生,25歲畢業(yè)于加州理工學(xué)院數(shù)學(xué)系,博士畢業(yè)后留621.1數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展
程序設(shè)計的實質(zhì)是什么?數(shù)據(jù)表示:將數(shù)據(jù)存儲在計算機中數(shù)據(jù)處理:處理數(shù)據(jù),求解問題數(shù)據(jù)結(jié)構(gòu)問題起源于程序設(shè)計
1.1數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展程序設(shè)計的實質(zhì)是什么?數(shù)據(jù)表63數(shù)據(jù)結(jié)構(gòu)隨著程序設(shè)計的發(fā)展而發(fā)展數(shù)據(jù)結(jié)構(gòu)的發(fā)展并未終結(jié)1.無結(jié)構(gòu)階段2.結(jié)構(gòu)化階段:數(shù)據(jù)結(jié)構(gòu)+算法=程序3.面向?qū)ο箅A段:(數(shù)據(jù)結(jié)構(gòu)+算法)=程序1.1數(shù)據(jù)結(jié)構(gòu)的興起和發(fā)展
數(shù)據(jù)結(jié)構(gòu)隨著程序設(shè)計的發(fā)展而發(fā)展數(shù)據(jù)結(jié)構(gòu)的發(fā)展并未終結(jié)1641.2數(shù)據(jù)結(jié)構(gòu)的研究對象計算機求解問題:
問題→抽象出問題的模型→求模型的解問題——數(shù)值問題、非數(shù)值問題
數(shù)值問題→數(shù)學(xué)方程非數(shù)值問題→數(shù)據(jù)結(jié)構(gòu)1.2數(shù)據(jù)結(jié)構(gòu)的研究對象計算機求解問題:65例1學(xué)籍管理問題——表結(jié)構(gòu)學(xué)號姓名性別出生日期政治面貌0001王軍男1983/09/02團員0002李明男1982/12/25黨員0003湯曉影女1984/03/26團員……………1.2數(shù)據(jù)結(jié)構(gòu)的研究對象完成什么功能?各表項之間是什么關(guān)系?例1學(xué)籍管理問題——表結(jié)構(gòu)學(xué)號姓名性別出生日期政治面貌66例2人機對弈問題——樹結(jié)構(gòu)1.2數(shù)據(jù)結(jié)構(gòu)的研究對象如何實現(xiàn)對弈?各格局之間是什么關(guān)系?…………..……..………...……例2人機對弈問題——樹結(jié)構(gòu)1.2數(shù)據(jù)結(jié)構(gòu)的研究對象67例3教學(xué)計劃編排問題——圖結(jié)構(gòu)C4,C5,C6數(shù)據(jù)庫原理C7C2,
C4計算機原理C6C3,C4數(shù)據(jù)結(jié)構(gòu)C5C1,C2程序設(shè)計C4C1離散數(shù)學(xué)C3無計算機導(dǎo)論C2無高等數(shù)學(xué)C1先修課課程名稱編號1.2數(shù)據(jù)結(jié)構(gòu)的研究對象C1C2C3C4C6C5C7如何表示課程之間的先修關(guān)系?例3教學(xué)計劃編排問題——圖結(jié)構(gòu)C4,C5,C6數(shù)據(jù)庫68數(shù)據(jù)結(jié)構(gòu)是研究非數(shù)值問題中計算機的操作對象以及它們之間的關(guān)系和操作的學(xué)科。1.2數(shù)據(jù)結(jié)構(gòu)的研究對象數(shù)據(jù)結(jié)構(gòu)是研究非數(shù)值問題中計算機的操作對象以及它們之691.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù):所有能輸入到計算機中并能被計算機程序識別和處理的符號集合。數(shù)值數(shù)據(jù):整數(shù)、實數(shù)等非數(shù)值數(shù)據(jù):圖形、圖象、聲音、文字等
數(shù)據(jù)元素:數(shù)據(jù)的基本單位,在計算機程序中通常作為一個整體進行考慮和處理。數(shù)據(jù)項:構(gòu)成數(shù)據(jù)元素的不可分割的最小單位。數(shù)據(jù)對象:具有相同性質(zhì)的數(shù)據(jù)元素的集合。
數(shù)據(jù)結(jié)構(gòu)的基本概念1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù):所有能輸入到計算機中并能被70數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項之間的關(guān)系包含關(guān)系:數(shù)據(jù)是由數(shù)據(jù)元素組成,數(shù)據(jù)元素是由數(shù)據(jù)項組成。數(shù)據(jù)元素是討論數(shù)據(jù)結(jié)構(gòu)時涉及的最小數(shù)據(jù)單位,其中的數(shù)據(jù)項一般不予考慮。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項之間的關(guān)系包含關(guān)系:數(shù)據(jù)是由數(shù)據(jù)元素組71數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不同,數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。邏輯結(jié)構(gòu):指數(shù)據(jù)元素之間邏輯關(guān)系的整體。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念關(guān)聯(lián)方式或鄰接關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)是從具體問題抽象出來的數(shù)據(jù)模型學(xué)籍管理問題中,表項之間的邏輯關(guān)系指的是什么?人機對弈問題中,格局之間的邏輯關(guān)系指的是什么?教學(xué)計劃編排問題中,課程之間的邏輯關(guān)系指的是什么?數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不72數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不同,數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。邏輯結(jié)構(gòu):指數(shù)據(jù)元素之間邏輯關(guān)系的整體。存儲結(jié)構(gòu):又稱為物理結(jié)構(gòu),是數(shù)據(jù)及其邏輯結(jié)構(gòu)在計算機中的表示。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念內(nèi)存存儲結(jié)構(gòu)實質(zhì)上是內(nèi)存分配,在具體實現(xiàn)時,依賴于計算機語言。數(shù)據(jù)結(jié)構(gòu):相互之間存在一定關(guān)系的數(shù)據(jù)元素的集合。按照視點的不73數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)74數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;⑵線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對一的線性關(guān)系;1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)75數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;⑵線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對一的線性關(guān)系;⑶樹結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對多的層次關(guān)系;1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)76數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:⑴集合:數(shù)據(jù)元素之間就是“屬于同一個集合”;⑵線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對一的線性關(guān)系;⑶樹結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對多的層次關(guān)系;⑷圖結(jié)構(gòu):數(shù)據(jù)元素之間存在著多對多的任意關(guān)系。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四類:1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)77通常有兩種存儲結(jié)構(gòu):1.順序存儲結(jié)構(gòu):用一組連續(xù)的存儲單元依次存儲數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系由元素的存儲位置來表示。…batcateat…起始地址例:(bat,cat,eat)1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念通常有兩種存儲結(jié)構(gòu):…起始地址例:(bat,cat,ea78通常有兩種存儲結(jié)構(gòu):1.順序存儲結(jié)構(gòu):用一組連續(xù)的存儲單元依次存儲數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系由元素的存儲位置來表示。2.鏈接存儲結(jié)構(gòu):用一組任意的存儲單元存儲數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系用指針來表示。例:(bat,cat,eat)1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的基本概念0200020803000325…………bat0200cat0325eat∧通常有兩種存儲結(jié)構(gòu):例:(bat,cat,eat)1.379邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)之間的關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)屬于用戶視圖,是面向問題的,反映了數(shù)據(jù)內(nèi)部的構(gòu)成方式;數(shù)據(jù)的存儲結(jié)構(gòu)屬于具體實現(xiàn)的視圖,是面向計算機的。一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以用多種存儲結(jié)構(gòu)來存儲,而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率往往是不同的。
1.3數(shù)據(jù)結(jié)構(gòu)的基本概念邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)之間的關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)屬于用戶視圖,是80數(shù)據(jù)結(jié)構(gòu)的訪問接口對數(shù)據(jù)結(jié)構(gòu)的訪問是指對數(shù)據(jù)的讀取、修改、加工、處理等操作。數(shù)據(jù)結(jié)構(gòu)的基本操作:各種應(yīng)用都能通過這些操作實現(xiàn)對數(shù)據(jù)結(jié)構(gòu)的各種訪問?;静僮鞯奶匦裕撼橄笮浴⒒拘?、完備性、一般性訪問接口:操作的調(diào)用形式與規(guī)范(例如形參表、返回類型等)。數(shù)據(jù)結(jié)構(gòu)的訪問接口:數(shù)據(jù)結(jié)構(gòu)基本操作接口的全體。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)的訪問接口對數(shù)據(jù)結(jié)構(gòu)的訪問是指對數(shù)據(jù)的讀取、修改、加81抽象數(shù)據(jù)類型1.數(shù)據(jù)類型(DataType):一組值的集合以及定義于這個值集上的一組操作的總稱。
例如:C++中的整型變量
2.抽象(Abstract):抽出問題本質(zhì)的特征而忽略非本質(zhì)的細節(jié)。
例如:地圖、駕駛汽車3.抽象數(shù)據(jù)類型(AbstractDataType,ADT):一個數(shù)據(jù)結(jié)構(gòu)以及定義在該結(jié)構(gòu)上的一組操作的總稱。1.3數(shù)據(jù)結(jié)構(gòu)的基本概念抽象數(shù)據(jù)類型1.數(shù)據(jù)類型(DataType):一組值的集82ADT是對數(shù)據(jù)類型的進一步抽象ADT·邏輯結(jié)構(gòu)·操作集合數(shù)據(jù)結(jié)構(gòu)·存儲結(jié)構(gòu)·算法設(shè)計類·成員變量·成員函數(shù)(a)使用視圖(b)設(shè)計視圖(c)實現(xiàn)視圖ADT的定義ADT的設(shè)計ADT的實現(xiàn)
ADT的不同視圖1.3數(shù)據(jù)結(jié)構(gòu)的基本概念A(yù)DT是對數(shù)據(jù)類型的進一步抽象ADT數(shù)據(jù)結(jié)構(gòu)類(a)使用視83ADT抽象數(shù)據(jù)類型名Data數(shù)據(jù)元素之間邏輯關(guān)系的定義Operation
操作1
前置條件:執(zhí)行此操作前數(shù)據(jù)所必須的狀態(tài)
輸入:執(zhí)行此操作所需要的輸入
功能:該操作將完成的功能
輸出:執(zhí)行該操作后產(chǎn)生的輸出
后置條件:執(zhí)行該操作后數(shù)據(jù)的狀態(tài)操作2
…………操作n……endADT
ADT的定義形式1.3數(shù)據(jù)結(jié)構(gòu)的基本概念A(yù)DT抽象數(shù)據(jù)類型名ADT的定義形式1.3數(shù)據(jù)結(jié)構(gòu)的基841.3數(shù)據(jù)結(jié)構(gòu)的基本概念(小結(jié))數(shù)據(jù)的操作:插入、刪除、修改、檢索、排序等數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的存儲結(jié)構(gòu)順序存儲鏈?zhǔn)酱鎯暇€性結(jié)構(gòu)樹結(jié)構(gòu)圖結(jié)構(gòu)非數(shù)值問題數(shù)據(jù)表示1.3數(shù)據(jù)結(jié)構(gòu)的基本概念(小結(jié))數(shù)據(jù)的操作:插入、刪除、修85算法的相關(guān)概念1.算法(Algorithm):是對特定問題求解步驟的一種描述,是指令的有限序列。2.
算法的五大特性:⑴
輸入:一個算法有零個或多個輸入。⑵輸出:一個算法有一個或多個輸出。⑶有窮性:一個算法必須總是在執(zhí)行有窮步之后結(jié)束,且每一步都在有窮時間內(nèi)完成。⑷確定性:算法中的每一條指令必須有確切的含義,對于相同的輸入只能得到相同的輸出。⑸可行性:算法描述的操作可以通過已經(jīng)實現(xiàn)的基本操作執(zhí)行有限次來實現(xiàn)。1.4算法及算法分析算法的相關(guān)概念1.算法(Algorithm):是對特定問題求86歐幾里德算法mnr例:歐幾里德算法——輾轉(zhuǎn)相除法求兩個自然數(shù)m
和n
的最大公約數(shù)1.4算法及算法分析mnr例:歐幾里德算法——輾轉(zhuǎn)相除法求兩個自然數(shù)m和n87算法的描述方法——自然語言優(yōu)點:容易理解缺點:冗長、二義性使用方法:粗線條描述算法思想
注意事項:避免寫成自然段1.4算法及算法分析算法的描述方法——自然語言優(yōu)點:容易理解1.4算法及算88①輸入m
和n;②求m除以n的余數(shù)r;③若r等于0,則n為最大公約數(shù),算法結(jié)束;否則執(zhí)行第④步;④將n的值放在m中,將r的值放在n中;⑤重新執(zhí)行第②步。例:歐幾里德算法自然語言1.4算法及算法分析①輸入m和n;例:歐幾里德算法自然語言1.4算法及算89優(yōu)點:流程直觀缺點:缺少嚴(yán)密性、靈活性使用方法:描述簡單算法注意事項:注意抽象層次算法的描述方法——流程圖1.4算法及算法分析優(yōu)點:流程直觀算法的描述方法——流程圖1.4算法及算90N開始輸入m和n
r=m%nr=0m=n;n=r輸出n結(jié)束Y流程圖例:歐幾里德算法1.4算法及算法分析N開始輸入m和nr=m%nr=0m=n;n=r91優(yōu)點:能由計算機執(zhí)行缺點:抽象性差,對語言要求高使用方法:算法需要驗證注意事項:將算法寫成子函數(shù)算法的描述方法——程序設(shè)計語言1.4算法及算法分析優(yōu)點:能由計算機執(zhí)行算法的描述方法——程序設(shè)計語言1.492#include<iostream.h>intCommonFactor(intm,intn){intr=m%n;while(r!=0){m=n;n=r;r=m%n;}returnn;}voidmain(){cout<<CommonFactor(63,54)<<endl;}程序設(shè)計語言例:歐幾里德算法1.4算法及算法分析#include<iostream.h>程序設(shè)計語言例:歐934算法及算法分析4算法及算法分析94偽代碼(Pseudocode):介于自然語言和程序設(shè)計語言之間的方法,它采用某一程序設(shè)計語言的基本語法,操作指令可以結(jié)合自然語言來設(shè)計。優(yōu)點:表達能力強,抽象性強,容易理解算法的描述方法——偽代碼1.4算法及算法分析偽代碼(Pseudocode):介于自然語言和程序設(shè)計語言之951.r=m%n;2.循環(huán)直到r等于02.1m=n;2.2n=r;2.3r=m%n;3.輸出n;偽代碼上述偽代碼再具體一些,用C++的函數(shù)來描述。請同學(xué)們自行完成!例:歐幾里德算法1.4算法及算法分析1.r=m%n;偽代碼上述偽代碼再具體96算法分析度量算法效率的方法:
事后統(tǒng)計:將算法實現(xiàn),測算其時間和空間開銷。
缺點:⑴編寫程序?qū)崿F(xiàn)算法將花費較多的時間和精力;⑵所得實驗結(jié)果依賴于計算機的軟硬件等環(huán)境因素。
事前分析:對算法所消耗資源的一種估算方法。1.4算法及算法分析算法分析度量算法效率的方法:1.4算法及算法分析97算法分析算法分析(AlgorithmAnalysis):對算法所需要的計算機資源——時間和空間進行估算。時間復(fù)雜性(TimeComplexity)空間復(fù)雜性(SpaceComplexity)1.4算法及算法分析算法分析算法分析(AlgorithmAnalysis):對98算法的時間復(fù)雜度分析1.4算法及算法分析算法分析算法的執(zhí)行時間=每條語句執(zhí)行時間之和執(zhí)行次數(shù)×執(zhí)行一次的時間指令系統(tǒng)、編譯的代碼質(zhì)量單位時間每條語句執(zhí)行次數(shù)之和for(i=1;i<=n;i++)for(j=1;j<=n;j++)x++;基本語句的執(zhí)行次數(shù)算法的時間復(fù)雜度分析1.4算法及算法分析算法分析算法的執(zhí)99問題規(guī)模:輸入量的多少?;菊Z句:是執(zhí)行次數(shù)與整個算法的執(zhí)行次數(shù)成正比的操作指令。for(i=1;i<=n;i++)for(j=1;j<=n;j++)x++;問題規(guī)模:n基本語句:x++1.4算法及算法分析算法分析問題規(guī)模:輸入量的多少。for(i=1;i<=n;i+100定義
若存在兩個正的常數(shù)c和n0,對于任意n≥n0,都有T(n)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《脊柱的運動解剖》課件
- 第6單元 科技文化與社會生活(A卷·知識通關(guān)練)(解析版)
- 中華傳統(tǒng)文化宣傳教育2
- 雙十二時尚之道
- 駛向輝煌共創(chuàng)精彩
- 音樂制作師勞動合同三篇
- 深部護理科護士的工作總結(jié)
- 競選班干部的演講稿模板集錦八篇
- 2023年-2024年安全管理人員安全教育培訓(xùn)試題附答案(A卷)
- 2024年企業(yè)主要負(fù)責(zé)人安全培訓(xùn)考試題附參考答案【突破訓(xùn)練】
- 第二章 粉體制備
- 預(yù)應(yīng)力空心板計算
- GA/T 1740.2-2024旅游景區(qū)安全防范要求第2部分:湖泊型
- 2023年開封糧食產(chǎn)業(yè)集團有限公司招聘筆試真題
- 2024年全國“紀(jì)檢監(jiān)察”業(yè)務(wù)相關(guān)知識考試題庫(附含答案)
- 2025年社區(qū)工作者考試試題庫及答案
- 期末檢測卷(三)2024-2025學(xué)年人教PEP版英語四年級上冊(含答案無聽力原文無聽力音頻)
- 2024-2030年中國兒童內(nèi)衣行業(yè)運營狀況及投資前景預(yù)測報告
- 吉首大學(xué)《高等數(shù)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 打印和復(fù)印服務(wù)協(xié)議
- 針灸習(xí)題庫(附參考答案)
評論
0/150
提交評論