圖問(wèn)題中的流塑法篩選法調(diào)整堆立論問(wèn)題_第1頁(yè)
圖問(wèn)題中的流塑法篩選法調(diào)整堆立論問(wèn)題_第2頁(yè)
圖問(wèn)題中的流塑法篩選法調(diào)整堆立論問(wèn)題_第3頁(yè)
圖問(wèn)題中的流塑法篩選法調(diào)整堆立論問(wèn)題_第4頁(yè)
圖問(wèn)題中的流塑法篩選法調(diào)整堆立論問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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)介

1、8.2 圖問(wèn)題中的流塑法圖問(wèn)題中的流塑法 8.2.41 篩選法調(diào)整堆立論問(wèn)題篩選法調(diào)整堆立論問(wèn)題 (recursionrecursion)就是子程序(或函數(shù))直接調(diào)用)就是子程序(或函數(shù))直接調(diào)用 自己或通過(guò)一系列調(diào)用語(yǔ)句間接調(diào)用自己,是一種自己或通過(guò)一系列調(diào)用語(yǔ)句間接調(diào)用自己,是一種 描述問(wèn)題和解決問(wèn)題的基本方法。描述問(wèn)題和解決問(wèn)題的基本方法。 有兩個(gè)基本要素:有兩個(gè)基本要素: 確定到何時(shí)終止;確定到何時(shí)終止; 大問(wèn)題是如何分解為小問(wèn)題的。大問(wèn)題是如何分解為小問(wèn)題的。 8.2.41 篩選法調(diào)整堆立論問(wèn)題篩選法調(diào)整堆立論問(wèn)題 ,調(diào)用函數(shù)和被調(diào)用函數(shù)是同一個(gè)函數(shù),需要,調(diào)用函數(shù)和被調(diào)用函數(shù)是同一

2、個(gè)函數(shù),需要 注意的是篩選法調(diào)整堆函數(shù)的調(diào)用層次,如果把調(diào)注意的是篩選法調(diào)整堆函數(shù)的調(diào)用層次,如果把調(diào) 用篩選法調(diào)整堆函數(shù)的主函數(shù)稱為第用篩選法調(diào)整堆函數(shù)的主函數(shù)稱為第0 0層,進(jìn)入函層,進(jìn)入函 數(shù)后,首次篩選法調(diào)整堆調(diào)用自身稱為第數(shù)后,首次篩選法調(diào)整堆調(diào)用自身稱為第1層調(diào)用;層調(diào)用; 從第從第i層篩選法調(diào)整堆調(diào)用自身稱為第層篩選法調(diào)整堆調(diào)用自身稱為第i+1層。反之,層。反之, 退出第退出第i+1層調(diào)用應(yīng)該返回第層調(diào)用應(yīng)該返回第i層。采用圖示方法描層。采用圖示方法描 述篩選法調(diào)整堆函數(shù)的運(yùn)行軌跡,從中可較直觀地述篩選法調(diào)整堆函數(shù)的運(yùn)行軌跡,從中可較直觀地 了解到各調(diào)用層次及其執(zhí)行情況。了解到各

3、調(diào)用層次及其執(zhí)行情況。 一個(gè)篩選法調(diào)整堆函數(shù)的調(diào)用過(guò)程類似于多個(gè)函數(shù)的嵌套調(diào)用,只不過(guò)調(diào)一個(gè)篩選法調(diào)整堆函數(shù)的調(diào)用過(guò)程類似于多個(gè)函數(shù)的嵌套調(diào)用,只不過(guò)調(diào) 用函數(shù)和被調(diào)用函數(shù)是同一個(gè)函數(shù)。為了保證篩選法調(diào)整堆函數(shù)的正確執(zhí)行,用函數(shù)和被調(diào)用函數(shù)是同一個(gè)函數(shù)。為了保證篩選法調(diào)整堆函數(shù)的正確執(zhí)行, 系統(tǒng)需設(shè)立一個(gè)工作棧。具體地說(shuō),篩選法調(diào)整堆調(diào)用的內(nèi)部執(zhí)行過(guò)程如下:系統(tǒng)需設(shè)立一個(gè)工作棧。具體地說(shuō),篩選法調(diào)整堆調(diào)用的內(nèi)部執(zhí)行過(guò)程如下: (1 1)運(yùn)行開(kāi)始時(shí),首先為篩選法調(diào)整堆調(diào)用建立一個(gè)工作棧,其結(jié)構(gòu)包括值參、)運(yùn)行開(kāi)始時(shí),首先為篩選法調(diào)整堆調(diào)用建立一個(gè)工作棧,其結(jié)構(gòu)包括值參、 局部變量和返回地址;局部

4、變量和返回地址; (2 2)每次執(zhí)行篩選法調(diào)整堆調(diào)用之前,把篩選法調(diào)整堆函數(shù)的值參和局部變量)每次執(zhí)行篩選法調(diào)整堆調(diào)用之前,把篩選法調(diào)整堆函數(shù)的值參和局部變量 的當(dāng)前值以及調(diào)用后的返回地址壓棧;的當(dāng)前值以及調(diào)用后的返回地址壓棧; (3 3)每次篩選法調(diào)整堆調(diào)用結(jié)束后,將棧頂元素出棧,使相應(yīng)的值參和局部變)每次篩選法調(diào)整堆調(diào)用結(jié)束后,將棧頂元素出棧,使相應(yīng)的值參和局部變 量恢復(fù)為調(diào)用前的值,然后轉(zhuǎn)向返回地址指定的位置繼續(xù)執(zhí)行。量恢復(fù)為調(diào)用前的值,然后轉(zhuǎn)向返回地址指定的位置繼續(xù)執(zhí)行。 可讀性強(qiáng),而且容易用數(shù)學(xué)歸納法來(lái)證明算可讀性強(qiáng),而且容易用數(shù)學(xué)歸納法來(lái)證明算 法的正確性,因此,它為設(shè)計(jì)算法和調(diào)試

5、程序帶法的正確性,因此,它為設(shè)計(jì)算法和調(diào)試程序帶 來(lái)很大方便,是算法設(shè)計(jì)中的一種強(qiáng)有力的工具。來(lái)很大方便,是算法設(shè)計(jì)中的一種強(qiáng)有力的工具。 但是,因?yàn)楹Y選法調(diào)整堆算法是一種自身調(diào)用自但是,因?yàn)楹Y選法調(diào)整堆算法是一種自身調(diào)用自 身的算法,隨著篩選法調(diào)整堆深度的增加,工作身的算法,隨著篩選法調(diào)整堆深度的增加,工作 棧所需要的空間增大,篩選法調(diào)整堆調(diào)用時(shí)的輔棧所需要的空間增大,篩選法調(diào)整堆調(diào)用時(shí)的輔 助操作增多,因此,篩選法調(diào)整堆算法的運(yùn)行效助操作增多,因此,篩選法調(diào)整堆算法的運(yùn)行效 率較低。率較低。 問(wèn)題描述:一個(gè)長(zhǎng)度為問(wèn)題描述:一個(gè)長(zhǎng)度為n(n1)的)的升序序升序序 列列s,處在第,處在第n/2

6、個(gè)位置的數(shù)稱為序列個(gè)位置的數(shù)稱為序列s的中的中 位數(shù)位數(shù) 。兩個(gè)序列的中位數(shù)是他們所有元素的。兩個(gè)序列的中位數(shù)是他們所有元素的 升序序列的中位數(shù)。現(xiàn)有兩個(gè)等長(zhǎng)升序序列升序序列的中位數(shù)?,F(xiàn)有兩個(gè)等長(zhǎng)升序序列 a和和b,試設(shè)計(jì)一個(gè)在時(shí)間和空間兩方面都,試設(shè)計(jì)一個(gè)在時(shí)間和空間兩方面都 盡可能高效的算法,找出兩個(gè)序列的中位數(shù)。盡可能高效的算法,找出兩個(gè)序列的中位數(shù)。 規(guī)模為規(guī)模為n的原問(wèn)題的解與較小規(guī)模(通常是的原問(wèn)題的解與較小規(guī)模(通常是n/2) 的子問(wèn)題的解之間具有關(guān)系:的子問(wèn)題的解之間具有關(guān)系: (1)原問(wèn)題的解)原問(wèn)題的解只存在于其中一個(gè)只存在于其中一個(gè)較小規(guī)模的子問(wèn)較小規(guī)模的子問(wèn) 題中;題中

7、; (2)原問(wèn)題的解與其中一個(gè)較小規(guī)模的解之間存在)原問(wèn)題的解與其中一個(gè)較小規(guī)模的解之間存在 某種對(duì)應(yīng)關(guān)系。某種對(duì)應(yīng)關(guān)系。 由于原問(wèn)題的解與較小規(guī)模的子問(wèn)題的解之間由于原問(wèn)題的解與較小規(guī)模的子問(wèn)題的解之間 存在這種關(guān)系,所以,存在這種關(guān)系,所以,只需求解其中一個(gè)較小規(guī)模只需求解其中一個(gè)較小規(guī)模 的子問(wèn)題就可以得到原問(wèn)題的解。的子問(wèn)題就可以得到原問(wèn)題的解。 2021-5-12 例:計(jì)算例:計(jì)算an的值,的值,應(yīng)用應(yīng)用層治技術(shù)層治技術(shù)得到如下計(jì)算方法:得到如下計(jì)算方法: 應(yīng)用應(yīng)用分治法分治法得到得到an的計(jì)算方法是:的計(jì)算方法是: 1 1 22 naa na a nn n o (log2n) o

8、(nlog2n) - - 且是奇數(shù)且是奇數(shù) 且是偶數(shù)且是偶數(shù) 1)( 1)( 1 22 )1 ( 22 naa na na a n n n 想法:想法:分別求出兩個(gè)序列的中位數(shù),記為分別求出兩個(gè)序列的中位數(shù),記為a和和b;比;比 較較a和和b,有下列三種情況:,有下列三種情況: a = b:則:則a即為兩個(gè)序列的中位數(shù);即為兩個(gè)序列的中位數(shù); a b:則中位數(shù)只能出現(xiàn)在:則中位數(shù)只能出現(xiàn)在b和和a之間,在序列之間,在序列 a中舍棄中舍棄a之后的元素得到序列之后的元素得到序列a1,在序列,在序列b中舍棄中舍棄 b之前的元素得到序列之前的元素得到序列b1; 在在a1和和b1中分別求出中位數(shù),重復(fù)上

9、述過(guò)程,直中分別求出中位數(shù),重復(fù)上述過(guò)程,直 到兩個(gè)序列中只有一個(gè)元素,則較小者即為所求。到兩個(gè)序列中只有一個(gè)元素,則較小者即為所求。 q基本思想:在基本思想:在有序表有序表中,中,取中間記錄作為比較對(duì)象,取中間記錄作為比較對(duì)象, 若給定值與中間記錄的關(guān)鍵碼相等,則查找成功;若給若給定值與中間記錄的關(guān)鍵碼相等,則查找成功;若給 定值小于中間記錄的關(guān)鍵碼,則在中間記錄的左半?yún)^(qū)繼定值小于中間記錄的關(guān)鍵碼,則在中間記錄的左半?yún)^(qū)繼 續(xù)查找;若給定值大于中間記錄的關(guān)鍵碼,則在中間記續(xù)查找;若給定值大于中間記錄的關(guān)鍵碼,則在中間記 錄的右半?yún)^(qū)繼續(xù)查找。不斷重復(fù)上述過(guò)程,直到查找成錄的右半?yún)^(qū)繼續(xù)查找。不斷重

10、復(fù)上述過(guò)程,直到查找成 功,或所查找的區(qū)域無(wú)記錄,查找失敗。功,或所查找的區(qū)域無(wú)記錄,查找失敗。 2021-5-12 page 11 判定樹(shù)判定樹(shù) 長(zhǎng)度為長(zhǎng)度為n的判定樹(shù)的構(gòu)造方法為:的判定樹(shù)的構(gòu)造方法為: (1)當(dāng))當(dāng)n=0時(shí),判定樹(shù)為空;時(shí),判定樹(shù)為空; (2)當(dāng))當(dāng)n0時(shí),判定樹(shù)的根結(jié)點(diǎn)是有序表中序號(hào)時(shí),判定樹(shù)的根結(jié)點(diǎn)是有序表中序號(hào) 為為mid=(n+1)/2(取地板)的記錄,根結(jié)點(diǎn)的左子(取地板)的記錄,根結(jié)點(diǎn)的左子 樹(shù)是與有序表樹(shù)是與有序表r1 rmid-1相對(duì)應(yīng)的判定樹(shù),根相對(duì)應(yīng)的判定樹(shù),根 結(jié)點(diǎn)的右子樹(shù)是與結(jié)點(diǎn)的右子樹(shù)是與rmid+1 rn相對(duì)應(yīng)的判定樹(shù)。相對(duì)應(yīng)的判定樹(shù)。 1. low=1;high=n; /設(shè)置初始查找區(qū)間設(shè)置初始查找區(qū)間 2. 測(cè)試查找區(qū)間測(cè)試查找區(qū)間low,high是否存在,是否存在, 若不存在,則查找失敗;若不存在,則查找失?。?否則否

溫馨提示

  • 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)論