《審普通程序》課件_第1頁(yè)
《審普通程序》課件_第2頁(yè)
《審普通程序》課件_第3頁(yè)
《審普通程序》課件_第4頁(yè)
《審普通程序》課件_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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)介

審普通程序?qū)徲?jì)程序是審計(jì)師為了獲取審計(jì)證據(jù),并形成審計(jì)意見而執(zhí)行的一系列步驟。審計(jì)程序分為兩種:實(shí)質(zhì)性程序和控制測(cè)試程序。課程介紹學(xué)習(xí)目標(biāo)掌握基本程序設(shè)計(jì)概念、算法思想和編程技巧。課程內(nèi)容涵蓋數(shù)據(jù)結(jié)構(gòu)、算法、程序設(shè)計(jì)語(yǔ)言基礎(chǔ)等內(nèi)容。課程特色理論與實(shí)踐結(jié)合,注重培養(yǎng)學(xué)生解決問(wèn)題的能力。普通程序的特點(diǎn)順序執(zhí)行程序按照代碼的順序一步一步執(zhí)行,指令之間嚴(yán)格按照順序執(zhí)行,不會(huì)跳躍執(zhí)行。固定流程執(zhí)行流程是預(yù)先確定的,程序執(zhí)行過(guò)程中的流程是固定的,不會(huì)根據(jù)條件進(jìn)行改變。普通程序的結(jié)構(gòu)1數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)組織方式2算法解決問(wèn)題步驟3控制結(jié)構(gòu)程序執(zhí)行流程4模塊化代碼復(fù)用程序由數(shù)據(jù)結(jié)構(gòu)、算法、控制結(jié)構(gòu)和模塊化組成。數(shù)據(jù)結(jié)構(gòu)組織數(shù)據(jù),算法實(shí)現(xiàn)程序功能,控制結(jié)構(gòu)決定程序執(zhí)行流程,模塊化則提高代碼復(fù)用性。算法概述問(wèn)題求解算法是解決特定問(wèn)題的一系列步驟或指令。它描述了解決問(wèn)題所需的具體操作順序。數(shù)據(jù)組織算法通常與數(shù)據(jù)結(jié)構(gòu)密切相關(guān),它們共同協(xié)作以有效地處理和操作數(shù)據(jù)。代碼實(shí)現(xiàn)算法可以用編程語(yǔ)言實(shí)現(xiàn),將抽象的步驟轉(zhuǎn)換為計(jì)算機(jī)可執(zhí)行的指令。算法的特性11.確定性算法的每一步都必須是明確的,不會(huì)產(chǎn)生歧義。同一個(gè)算法在相同條件下執(zhí)行,結(jié)果應(yīng)始終一致。22.有窮性算法必須在有限步驟內(nèi)完成,不能無(wú)限循環(huán)。經(jīng)過(guò)有限次操作后,算法能夠終止。33.可行性算法的步驟必須是可執(zhí)行的,可以被計(jì)算機(jī)或人執(zhí)行,即算法中的每個(gè)步驟都能夠被計(jì)算機(jī)或人用有限的時(shí)間和空間完成。44.輸入/輸出算法必須有輸入,并產(chǎn)生相應(yīng)的輸出結(jié)果。輸入可以是零個(gè)或多個(gè),輸出也可以是零個(gè)或多個(gè)。算法效率評(píng)判算法效率是指算法執(zhí)行的時(shí)間和空間復(fù)雜度,可以衡量算法的優(yōu)劣。時(shí)間復(fù)雜度是指算法執(zhí)行所需要的計(jì)算時(shí)間,空間復(fù)雜度是指算法執(zhí)行所需要的內(nèi)存空間。時(shí)間復(fù)雜度時(shí)間復(fù)雜度衡量算法執(zhí)行時(shí)間隨輸入規(guī)模增長(zhǎng)變化趨勢(shì)。常用大O記號(hào)表示,例如O(n)、O(n^2)、O(logn)等。時(shí)間復(fù)雜度增長(zhǎng)趨勢(shì)示例算法O(1)常數(shù)時(shí)間數(shù)組訪問(wèn)O(n)線性時(shí)間線性查找O(n^2)平方時(shí)間冒泡排序O(logn)對(duì)數(shù)時(shí)間二分查找空間復(fù)雜度空間復(fù)雜度衡量算法在運(yùn)行時(shí)所使用的額外存儲(chǔ)空間。它描述了算法對(duì)內(nèi)存的需求??臻g復(fù)雜度與輸入數(shù)據(jù)的規(guī)模有關(guān),算法需要的存儲(chǔ)空間會(huì)隨著輸入規(guī)模的增長(zhǎng)而改變。例如,線性查找需要額外的空間來(lái)存儲(chǔ)中間結(jié)果,而二分查找只需要常數(shù)大小的額外空間。評(píng)估算法的空間復(fù)雜度對(duì)于優(yōu)化內(nèi)存使用、避免內(nèi)存溢出和提高效率至關(guān)重要。算法分析算法分析主要通過(guò)以下步驟進(jìn)行:1確定問(wèn)題首先需要明確問(wèn)題的目標(biāo)和約束條件。2設(shè)計(jì)算法根據(jù)問(wèn)題性質(zhì),設(shè)計(jì)出具體的算法步驟。3算法驗(yàn)證使用測(cè)試用例驗(yàn)證算法的正確性和效率。4優(yōu)化改進(jìn)對(duì)算法進(jìn)行優(yōu)化,提高其執(zhí)行效率和資源利用率。線性結(jié)構(gòu)線性結(jié)構(gòu)的特點(diǎn)線性結(jié)構(gòu)是一種簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),元素之間存在唯一的線性關(guān)系,可以進(jìn)行順序訪問(wèn)。線性結(jié)構(gòu)的類型數(shù)組鏈表?xiàng)j?duì)列線性結(jié)構(gòu)的應(yīng)用線性結(jié)構(gòu)廣泛應(yīng)用于各種程序中,例如,用于存儲(chǔ)和管理數(shù)據(jù),實(shí)現(xiàn)排序算法,以及構(gòu)建其他復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。棧后進(jìn)先出棧是一種線性數(shù)據(jù)結(jié)構(gòu),遵循后進(jìn)先出的原則。數(shù)據(jù)存儲(chǔ)棧使用一個(gè)指針,稱為棧頂指針,指向當(dāng)前棧頂元素。常見操作入棧出棧獲取棧頂元素隊(duì)列先進(jìn)先出隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),遵循先進(jìn)先出的原則。數(shù)據(jù)從隊(duì)尾插入,從隊(duì)頭刪除。應(yīng)用場(chǎng)景隊(duì)列廣泛應(yīng)用于各種程序設(shè)計(jì)領(lǐng)域,例如:任務(wù)調(diào)度、緩沖區(qū)管理、打印機(jī)管理等。數(shù)據(jù)結(jié)構(gòu)隊(duì)列通常用數(shù)組或鏈表實(shí)現(xiàn)。數(shù)組實(shí)現(xiàn)通常使用循環(huán)數(shù)組來(lái)提高效率。鏈表節(jié)點(diǎn)鏈接每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)和指向下一個(gè)節(jié)點(diǎn)的指針。鏈表通過(guò)節(jié)點(diǎn)之間的鏈接來(lái)組織數(shù)據(jù)。單向鏈表節(jié)點(diǎn)只能指向下一個(gè)節(jié)點(diǎn),形成線性結(jié)構(gòu)。雙向鏈表每個(gè)節(jié)點(diǎn)同時(shí)包含指向下一個(gè)節(jié)點(diǎn)和上一個(gè)節(jié)點(diǎn)的指針,允許雙向遍歷。循環(huán)鏈表最后一個(gè)節(jié)點(diǎn)指向第一個(gè)節(jié)點(diǎn),形成閉環(huán)結(jié)構(gòu),方便循環(huán)訪問(wèn)。遞歸1定義遞歸是一種函數(shù)調(diào)用自身的編程技巧。它通過(guò)將問(wèn)題分解為更小的、類似的問(wèn)題來(lái)解決復(fù)雜問(wèn)題。2關(guān)鍵要素遞歸包含兩個(gè)關(guān)鍵部分:基本情況和遞歸情況?;厩闆r定義了遞歸結(jié)束的條件,而遞歸情況則將問(wèn)題分解為更小的子問(wèn)題并遞歸調(diào)用自身。3應(yīng)用遞歸廣泛應(yīng)用于各種算法中,例如排序、查找和樹遍歷等,它提供了一種簡(jiǎn)潔而優(yōu)雅的解決問(wèn)題的方案。4優(yōu)缺點(diǎn)遞歸可以使代碼更簡(jiǎn)潔,但它可能導(dǎo)致性能問(wèn)題,例如堆棧溢出,需要謹(jǐn)慎使用。排序算法排序算法排序算法是一種重要的算法,用于將一組無(wú)序的數(shù)據(jù)按照特定的順序排列。它們?cè)诟鞣N應(yīng)用程序中都有廣泛的應(yīng)用,包括數(shù)據(jù)庫(kù)管理、搜索引擎和數(shù)據(jù)可視化。排序算法類型排序算法的類型很多,常見的有插入排序、選擇排序、冒泡排序、歸并排序、快速排序等等。每種排序算法都有其優(yōu)缺點(diǎn)和適用場(chǎng)景。查找算法11.線性查找從頭到尾依次遍歷列表,查找目標(biāo)元素。22.二分查找對(duì)有序列表,每次查找目標(biāo)元素所在區(qū)間的一半。33.哈希表查找使用哈希函數(shù)將元素映射到哈希表,通過(guò)索引快速查找。44.樹形查找通過(guò)樹結(jié)構(gòu)組織數(shù)據(jù),快速查找目標(biāo)元素。圖論基礎(chǔ)圖的定義圖論是用點(diǎn)和邊來(lái)表示對(duì)象及其關(guān)系的數(shù)學(xué)分支。圖的類型無(wú)向圖和有向圖,連通圖和非連通圖等。圖的表示方法鄰接矩陣,鄰接表等。最小生成樹定義最小生成樹(MST)是一個(gè)連通圖的生成樹,其中所有邊上的權(quán)重之和最小。應(yīng)用最小生成樹在網(wǎng)絡(luò)設(shè)計(jì)、路線規(guī)劃和電路板設(shè)計(jì)等領(lǐng)域有廣泛的應(yīng)用。算法常用的最小生成樹算法包括Prim算法和Kruskal算法。步驟算法通過(guò)逐步添加邊來(lái)構(gòu)建MST,直到所有頂點(diǎn)都連接。最短路徑1概念最短路徑問(wèn)題是圖論中的一個(gè)經(jīng)典問(wèn)題,它旨在找到圖中兩個(gè)節(jié)點(diǎn)之間最短的路徑。2算法常見的算法包括迪杰斯特拉算法和弗洛伊德算法,它們分別適用于單源最短路徑和所有節(jié)點(diǎn)對(duì)之間的最短路徑問(wèn)題。3應(yīng)用最短路徑問(wèn)題在現(xiàn)實(shí)生活中有著廣泛的應(yīng)用,例如交通導(dǎo)航、網(wǎng)絡(luò)路由、物流配送等等。拓?fù)渑判?定義拓?fù)渑判蚴菍?duì)有向無(wú)環(huán)圖(DAG)的頂點(diǎn)進(jìn)行線性排序,使得對(duì)于圖中任意一條邊(u,v),u在排序中都位于v之前。2應(yīng)用場(chǎng)景拓?fù)渑判蛟诂F(xiàn)實(shí)世界中有著廣泛的應(yīng)用,例如:任務(wù)調(diào)度、項(xiàng)目管理、課程安排等。3算法實(shí)現(xiàn)常用的拓?fù)渑判蛩惴ㄓ校荷疃葍?yōu)先搜索(DFS)和Kahn算法,兩者都能有效地找到一個(gè)合法的拓?fù)渑判蛐蛄小?dòng)態(tài)規(guī)劃最優(yōu)子結(jié)構(gòu)將問(wèn)題分解成子問(wèn)題,子問(wèn)題的最優(yōu)解可以用來(lái)構(gòu)建原問(wèn)題的最優(yōu)解。重疊子問(wèn)題多個(gè)子問(wèn)題重復(fù)出現(xiàn),可以利用記憶化技術(shù)避免重復(fù)計(jì)算。動(dòng)態(tài)規(guī)劃步驟定義狀態(tài)找出狀態(tài)轉(zhuǎn)移方程確定邊界條件自底向上計(jì)算貪心算法貪心策略貪心算法在每一步都選擇當(dāng)前最佳的選擇。它不考慮全局最優(yōu)解,只關(guān)注局部最優(yōu)解。應(yīng)用場(chǎng)景貪心算法適用于尋找最優(yōu)解的問(wèn)題。例如,最短路徑問(wèn)題、最小生成樹問(wèn)題、背包問(wèn)題等。分治算法將問(wèn)題分解分治算法將問(wèn)題分解成多個(gè)子問(wèn)題,這些子問(wèn)題與原問(wèn)題形式相同,但規(guī)模更小。遞歸解決子問(wèn)題遞歸地解決這些子問(wèn)題,直到子問(wèn)題規(guī)模足夠小,可以直接求解。合并子問(wèn)題解將子問(wèn)題解合并成原問(wèn)題的解。回溯算法系統(tǒng)性搜索回溯算法是一種探索所有可能的解決方案的方法。它通過(guò)嘗試所有可能的路徑,逐步構(gòu)建解決方案,并回溯到之前的狀態(tài),直到找到最佳解決方案。剪枝優(yōu)化通過(guò)判斷當(dāng)前路徑是否可能導(dǎo)致最佳解決方案,回溯算法可以有效地避免不必要的搜索。這種策略被稱為“剪枝”,可以顯著提高算法效率。字符串匹配11.蠻力匹配逐字符比較模式串和目標(biāo)串,效率較低,但易于理解。22.KMP算法利用模式串自身的信息,避免不必要的回溯,提高效率。33.BM算法從模式串末尾開始匹配,效率更高,適用于較長(zhǎng)模式串。44.Rabin-Karp算法利用哈希函數(shù)將字符串轉(zhuǎn)換為數(shù)字,快速比較,適用于海量數(shù)據(jù)。散列表概念散列表是將鍵值對(duì)映射到一個(gè)數(shù)組的結(jié)構(gòu),每個(gè)鍵值對(duì)存儲(chǔ)在數(shù)組的特定索引位置。散列函數(shù)散列函數(shù)將鍵轉(zhuǎn)換為一個(gè)數(shù)值,用于確定該鍵值對(duì)在數(shù)組中的位置。碰撞處理當(dāng)多個(gè)鍵映射到同一個(gè)索引時(shí),需要使用碰撞處理機(jī)制,例如鏈?zhǔn)降刂贩ɑ蜷_放地址法。應(yīng)用散列表廣泛應(yīng)用于緩存、數(shù)據(jù)庫(kù)索引、密碼存儲(chǔ)等領(lǐng)域,能夠高效地進(jìn)行查找、插入和刪除操作。樹樹的結(jié)構(gòu)樹是一種非線性數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)和邊組成,并具有層次結(jié)構(gòu)。根節(jié)點(diǎn)樹只有一個(gè)根節(jié)點(diǎn),作為樹的起點(diǎn),沒有父節(jié)點(diǎn)。子節(jié)點(diǎn)和父節(jié)點(diǎn)樹中每個(gè)節(jié)點(diǎn)可以有多個(gè)子節(jié)點(diǎn),而每個(gè)子節(jié)點(diǎn)只有一個(gè)父節(jié)點(diǎn)。堆堆數(shù)據(jù)結(jié)構(gòu)堆是一種特殊的二叉樹,滿足堆性質(zhì),即父節(jié)點(diǎn)的值大于等于(或小于等于)所有子節(jié)點(diǎn)的值。優(yōu)先級(jí)隊(duì)列堆常被用于實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列,該數(shù)據(jù)結(jié)構(gòu)支持高效地插入和刪除元素,并始終維護(hù)元素

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論