版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1(1)用計算機求解問題的步驟:)用計算機求解問題的步驟:1、問題分析2、數(shù)學模型建立3、算法設計與選擇4、算法指標5、算法分析6、算法實現(xiàn)7、程序調(diào)試8、結果整理文檔編制(2)算法定義:算法是指在解決問題時,按照某種機械步驟一定可以得到問題結果的處理)算法定義:算法是指在解決問題時,按照某種機械步驟一定可以得到問題結果的處理過程過程(3)算法的三要素)算法的三要素1、操作2、控制結構3、數(shù)據(jù)結構算法具有以下算法具有以下5個屬性個屬性:
2、有窮性:一個算法必須總是在執(zhí)行有窮步之后結束,且每一步都在有窮時間內(nèi)完成。確定性:算法中每一條指令必須有確切的含義。不存在二義性。只有一個入口和一個出口可行性:一個算法是可行的就是算法描述的操作是可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)的。輸入:一個算法有零個或多個輸入,這些輸入取自于某個特定對象的集合。輸出:一個算法有一個或多個輸出,這些輸出同輸入有著某些特定關系的量。算法設計的質(zhì)量指標:算法設計的質(zhì)量指標:正確性:算法應滿足具體問
3、題的需求;可讀性:算法應該好讀,以有利于讀者對程序的理解;健壯性:算法應具有容錯處理,當輸入為非法數(shù)據(jù)時,算法應對其作出反應,而不是產(chǎn)生莫名其妙的輸出結果。效率與存儲量需求:效率指的是算法執(zhí)行的時間;存儲量需求指算法執(zhí)行過程中所需要的最大存儲空間。一般這兩者與問題的規(guī)模有關。經(jīng)常采用的算法主要有迭代法、分而治之法、貪婪法、動態(tài)規(guī)劃法、回溯法、分支限界法迭代法迭代法也稱“輾轉法”也稱“輾轉法”,是一種不斷用變量的舊值遞推出新值的解決問題的
4、方,是一種不斷用變量的舊值遞推出新值的解決問題的方法。法。利用迭代算法解決問題,需要做好以下三個方面的工作:一、確定迭代模型。在可以用迭代算法解決的問題中,至少存在一個直接或間接地不斷由舊值遞推出新值的變量,這個變量就是迭代變量。二、建立迭代關系式。所謂迭代關系式,指如何從變量的前一個值推出其下一個值的公式(或關系)。迭代關系式的建立是解決迭代問題的關鍵,通??梢允褂眠f推或倒推的方法來完成。三、對迭代過程進行控制。在什么時候結束迭代過程
5、?這是編寫迭代程序必須考慮的問題。不能讓迭代過程無休止地重復執(zhí)行下去。迭代過程的控制通??煞譃閮煞N情況:一種是所需的迭代次數(shù)是個確定的值,可以計算出來;另一種是所需的迭代次數(shù)無法確定。對于前一種情況,可以構建一個固定次數(shù)的循環(huán)來實現(xiàn)對迭代過程的控制;對于后一種情況,需要進一步分析出用來結束迭代過程的條件。編寫計算斐波那契(編寫計算斐波那契(Fibonacci)數(shù)列的第)數(shù)列的第n項函數(shù)項函數(shù)fib(n)。斐波那契數(shù)列為:0、1、1、2、
6、3、……,即:fib(0)=0fib(1)=13(4)該問題所分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子子問題。3、分治法的基本步驟分治法在每一層遞歸上都有三個步驟:(1)分解:將原問題分解為若干個規(guī)模較小,相互獨立,與原問題形式相同的子問題;(2)解決:若子問題規(guī)模較小而容易被解決則直接解,否則遞歸地解各個子問題;(3)合并:將各個子問題的解合并為原問題的解??焖倥判蚩焖倥判蛟谶@種方法中,n個元素被分成三段(組):左段
7、left,右段right和中段middle。中段僅包含一個元素。左段中各元素都小于等于中段元素,右段中各元素都大于等于中段元素。因此left和right中的元素可以獨立排序,并且不必對left和right的排序結果進行合并。middle中的元素被稱為支點(pivot)。圖149中給出了快速排序的偽代碼。使用快速排序方法對a[0:n1]排序從a[0:n1]中選擇一個元素作為middle,該元素為支點把余下的元素分割為兩段left和righ
8、t,使得left中的元素都小于等于支點,而right中的元素都大于等于支點遞歸地使用快速排序方法對left進行排序遞歸地使用快速排序方法對right進行排序所得結果為leftmiddleright考察元素序列[48371562]。假設選擇元素6作為支點,則6位于middle;4,3,1,5,2位于left;8,7位于right。當left排好序后,所得結果為1,2,3,4,5;當right排好序后,所得結果為7,8。把right中的元素
9、放在支點元素之后,left中的元素放在支點元素之前,即可得到最終的結果[12345678]。把元素序列劃分為left、middle和right可以就地進行(見程序146)。在程序146中,支點總是取位置1中的元素。也可以采用其他選擇方式來提高排序性能,本章稍后部分將給出這樣一種選擇。程序146快速排序templatevoidQuickSt(Taintn)對a[0:n1]進行快速排序要求a[n]必需有最大關鍵值quickSt(a0n1)t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機算法設計與分析期末試題4套含答案
- 計算機算法設計與分析第4版
- 《計算機算法設計與分析》習題及答案
- 計算機網(wǎng)絡試題含答案———期末
- 《計算機算法設計與分析》課程設計
- 計算機程序算法與算法描述
- 計算機算法設計與分析課后題答案(第三版)王曉東
- 計算機算法基礎
- 計算機算法.翻譯
- 算法分析期末試題卷集答案解析6套
- 計算機系統(tǒng)算法設計與分析報告課程設計
- 計算機(含答案)
- 計算機10套題
- 計算機輔助設計基礎試題含答案
- 計算機表演賽前4套答案
- 計算機基礎試題庫含答案
- 計算機(含答案)
- 計算機試題和答案分析
- 數(shù)據(jù)結構與算法分析六套期末復習題含答案
- 潮流計算的計算機算法課程設計
評論
0/150
提交評論