二分搜索算法實(shí)驗(yàn)報(bào)告_第1頁
二分搜索算法實(shí)驗(yàn)報(bào)告_第2頁
二分搜索算法實(shí)驗(yàn)報(bào)告_第3頁
二分搜索算法實(shí)驗(yàn)報(bào)告_第4頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、本文格式為word版,下載可任意編輯二分搜索算法實(shí)驗(yàn)報(bào)告 試驗(yàn)一 二分搜尋算法試驗(yàn)報(bào)告 一 試驗(yàn)?zāi)康?1、 理解分治算法得概念與基本要素; 2、 理解遞歸得概念; 3、 把握設(shè)計(jì)有效算法得分治策略; 4、 通過二分搜尋技術(shù)學(xué)習(xí)分治策略設(shè)計(jì)技巧; 二 二. 試驗(yàn)內(nèi)容及要求 1. 使用二分搜尋算法查找任意個(gè)有序數(shù)列中得指定元素。 2 通過上機(jī)試驗(yàn)進(jìn)行算法實(shí)現(xiàn)。 . 保存與打印出程序得運(yùn)行結(jié)果,并結(jié)合程序進(jìn)行分析,上交試驗(yàn)報(bào)告。 4、 至少使用兩種方法進(jìn)行編程。 三 三. 試驗(yàn)原理 二分搜尋算法也稱為折半查找法,它充分利用了元素間得次序關(guān)系,采納分治策略,可在最壞得狀況下用 o(lo n)完成搜尋任

2、務(wù)。 【基本思想】將個(gè)元素分成個(gè)數(shù)大致相同得兩半,取 an與欲查找得 x 作比較,假如n/2則找到,算法終止。假如 xan/2,則我們只要在數(shù)組得左半部連續(xù)搜尋 x(這里假設(shè)數(shù)組元素呈升序排列)。假如 xa/2,則我們只要在數(shù)組 a 得右半部連續(xù)搜尋。 二分搜尋法得應(yīng)用極其廣泛,而且它得思想易于理解。第一個(gè)二分搜尋算法早在 146 年就消失了,但就是第一個(gè)完全正確得二分搜尋算法直到92 年才消失。bentey 在她得著作wrtg corect prras中寫道,0%得計(jì)算機(jī)專家不能在 2 小時(shí)內(nèi)寫出 完全正確得二分搜尋算法。問題得關(guān)鍵在于精確地制定各次查找范圍得邊界以及終止條件得確定,正確地歸

3、納奇偶數(shù)得各種狀況,其實(shí)整理后可以發(fā)覺它得詳細(xì)算法就是很直觀得。 ² 方法一:直接查找 窮舉法遍歷 ² 方法二:遞歸查找 #incluetdi、h #efne ma 3 i binrear( a,nt x,int lt,nt igh) if(lefrig) rt 1; els left=(et+rigt)/2; f(lft) retr eft; ele if(xlet) binarysearch(a,lft,rght); ese inaryseh(,x,ft-righ,lt+); main() in max; int d,x,i,,p; rnf(輸?shù)脗€(gè)數(shù)n); canf(%

4、d,); printf(數(shù)組數(shù)據(jù)n); for(i0;i;i+) scanf(%d,ai); fo (i=0;in-;i+) p=i; r (j+1;jn;j+) i (apaj) p=; if (p!=) ap; p=a; ai; fo(i=0;in;i+) pinf(%d ,ai); pit(輸入要查找得數(shù)n); scanf(%d,); oun=inarysarc(,,0,n); f(fon=-1) rint(未找到); else prinf(要查找得數(shù)在第 個(gè)n,found); ² 方法三:迭代查找 #incdedo、 #defne m 30 nt binarysarch(i

5、a,int x,it n) int eft =0; int ri=n-1; it middle; whe(eft=riht) midle(lft+right)/2; i(x=mdd) retrn dle; if(xamidde) ftmiddle+; l right=middle-1; rurn; in() int amax; int found,x,n,i,j,p; rinf(數(shù)得個(gè)數(shù)); anf(%d,n); print(數(shù)組數(shù)據(jù)n); f(i=0;in;i+) saf(%d,ai); or (i=;i-;+) =i; fr (=i+;n;j+) if (aaj) p=j; f (!=j)

6、 x=ap; ap=i; a=; for(i=0;in;i+) pnt(d ,i); rnf(輸入要查找得數(shù)n); sc(%d,x); fun=biaysearch(,x,n); if(fun=-1) print(未找到); else printf(要查找得數(shù)在第 %d 個(gè),found+1); 四 程序代碼 變量定義說明: bnrysearh()算法: a-數(shù)組 k-要查找得元素 lft左標(biāo)志 rh-右標(biāo)志 (n-數(shù)據(jù)個(gè)數(shù)) man()主函數(shù): 標(biāo)下為值其到找,到找未示表-,志標(biāo)到找否是就-dnuox-要查找得元素 n-元素個(gè)數(shù) i,,p-循環(huán)掌握變量 (1)、遞歸查找 ncudestdio、

7、h din mx 30 int binayseach(int a,int ky,nt left,nt ght) in md(riht-righ)2+lef; f(amid=k) reur md; if(let=rig) reurn 1; lse if(keyamd) retun inaysrch(,key,mid+1,ight); else if(kaid) eturn binarearc(a,key,left,mi 1); rturn ; it i(oid) nt max; in fond,x,n,i,j,p; pif(數(shù)據(jù)個(gè)數(shù):); san(%,); print(輸入數(shù)據(jù):n); for(

8、=0;in;i+) pf(請輸入第d 個(gè)數(shù)據(jù):,); sca(%,a); r (i;n-1;i+) /選擇排序 p=i; )+j;j;1+=j(rof i(paj) ;=p )j=!( i x=ap; ap=ai; aix; rit(排序后得數(shù)據(jù)如下:); for(i0;in;+) prnf(d ,a); printf(n); printf(輸入要查找得數(shù):); scanf(%d,); int lef=0,igh=n; foundbiarserch(a,,left,right); i(found=1) prif(未找到n); ele printf(要查找得數(shù)在第%d 個(gè),fud1); (2)、

9、非遞歸查找 #cluesio、h defi max 3 int binaryarch(n , int key, ln) t dlen/; if (ey=ami) ern i; it let0; in rghtn-; hile(let=right) 找查代迭 md=(riht+lt)/2; if(eyamid) riht=id1; ele if(keyamd) ft=id; lse retun mi; return -; nt min(voi) int amax; nt foud,x,n,i,j,p; print(數(shù)據(jù)個(gè)數(shù):); scan(%d,); pintf(輸入數(shù)據(jù):n); for(i=0

10、;in;i+) ;)i,:據(jù)數(shù)個(gè)%第入輸請(tirp scanf(%d,ai); fr (i=;in1;+)/ 序排擇選 ;i=p fr(j=+1;j;j+) if(apaj) =j; i (p!=j) x=ap; ap=a; =x; pinf(排序后得數(shù)據(jù)如下:); for(i=0;n;i+) prntf(%d ,ai); printf(n); print(輸入要查找得數(shù):); scan(%d,x); t lft=0,rghn; found=naysech(a,x,n); if(foud=) rinf(未找到); ls pintf(要查找得數(shù)在第%d 個(gè)n,fud+1); 五 結(jié)果運(yùn)行與分析 找到要查找得數(shù)據(jù): 未找到要查找得數(shù)據(jù): 六心得與體會(huì) 通過這次試驗(yàn),鞏固了自己對二分搜尋算法得理解,它就是分治法得一個(gè)特別例子,由此也對分治法有了更深一層次得熟悉。分而治之,化簡單為簡潔,不只就是在算法中,在日常生活中也就是極其重要得。正如 betley 在她得著作witig correct rams中所說,能夠完整得寫出二分搜

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論