《photoshop圖形圖像處理6.4 查找電子教案 中職c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)》由會(huì)員分享,可在線閱讀,更多相關(guān)《photoshop圖形圖像處理6.4 查找電子教案 中職c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(15頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,*,photoshop圖形圖像處理6.4 查找電子教案 中職 高教版 c語(yǔ)言程序設(shè)計(jì)基礎(chǔ),利用順序查找方法查找數(shù)據(jù),利用二分查找方法查找數(shù)據(jù),能夠分清順序法和二分法的工作方法及優(yōu)缺點(diǎn),能力目標(biāo):,任務(wù)一 用順序查找法定位指定的數(shù),#includestdio.h,#define SIZE 10,main(),int aSIZE=79,82,55,60,65,93,81,90,58,67,int i,x;,printf(,請(qǐng)輸入,x,的值:,);,scanf(%d,for(i=0;iSIZE;i+),if(ai
2、=x),break;,if(iSIZE),printf(找到%d,位于數(shù)組第%d個(gè)元素位置n,x,i);,else,printf(沒(méi)有找到%dn,x);,任務(wù)一 用順序查找法在一組數(shù)中定位指定的數(shù),分析以下運(yùn)行結(jié)果。,請(qǐng)輸入x的值:90,(找到90,位于數(shù)組第8個(gè)元素位置),請(qǐng)輸入x的值:56,(沒(méi)有找到56),任務(wù)一 用順序查找法在一組數(shù)中定位指定的數(shù),知識(shí)盤點(diǎn):,順序查找是一種最簡(jiǎn)單的查找方法,它的思路是:,從第一個(gè)元素開(kāi)始,逐個(gè)把元素的關(guān)鍵字值和給定值比較,若某個(gè)元素的關(guān)鍵字值和給定值相等,則查找成功;否則,若直至第n個(gè)數(shù)據(jù)都不相等,說(shuō)明不存在滿足條件的數(shù)據(jù)元素,查找失敗。,順序查找的優(yōu)
3、點(diǎn):算法簡(jiǎn)單,且對(duì)數(shù)據(jù)的排列無(wú)任何要求。,順序查找的,缺點(diǎn):查找效率低,當(dāng)i較大時(shí),不宜采用順序查找。,任務(wù)二 用二分查找法定位指定的數(shù),#include,#define N 15,main(),int i,j,number,top,bott,min,loca,an,flag;,char c;,printf(按從大到小的順序輸入15個(gè)數(shù)n);,scanf(%d,i=1;,while(iai-1),i+;,else,printf(請(qǐng)重新輸入一個(gè)數(shù):);,printf(必須大于%dn,ai-1);,printf(n);,for(i=0;iN;i+),printf(%4d,ai);,printf(n
4、);,flag=1;接下頁(yè),任務(wù)二 用二分查找法在一組數(shù)中定位指定的數(shù),while(flag),printf(,請(qǐng)輸入查找的數(shù)據(jù):,);,scanf(%d,loca=0;,top=0;,bott=N-1;,if(numberaN-1),loca=-1;,while(loca=0)&(top=bott),min=(bott+top)/2;,if(number=amin),loca=min;,printf(“%d位于表中第%d個(gè)數(shù) 接下頁(yè),任務(wù)二 用二分查找法在一組數(shù)中定位指定的數(shù),任務(wù)二 用二分查找法在一組數(shù)中定位指定的數(shù),n,number,loca+1);,else if(numberamin
5、),bott=min-1;,else,top=min+1;,if(loca=0|loca=-1),printf(%d不在表中。n,number);,printf(是否繼續(xù)查找?Y/N!n);,c=getchar();,if(c=n|c=N),flag=0;,分析以下運(yùn)行結(jié)果:,按從小到大的順序輸入,15,個(gè)數(shù),1 3 4 5 6 8,12 23 34 44 45 56,57 58 68,請(qǐng)輸入查找數(shù)據(jù):56,(56位于表中第12個(gè)數(shù)),請(qǐng)輸入查找數(shù)據(jù):59,(59不在表中),任務(wù)二 用二分查找法在一組數(shù)中定位指定的數(shù),知識(shí)盤點(diǎn):,查找方法:設(shè)三個(gè)位置指針top、bott、mid。bott指向查
6、找范圍的底部,top指向查找范圍的頂部,mid=(top+bott)/2指向查找范圍的中間位置。,假設(shè)待查找的數(shù)放在x中,數(shù)列放在a數(shù)組中,接著要進(jìn)行三種判斷:,判斷x是否等于a(mid),如果等于,則已找到,查找不必再進(jìn)行下去,否則進(jìn)行后面的判斷。,判斷x是否小于a(mid),如果小于,則x必定落在top和mid-1的范圍之內(nèi),下一步查找只須在這個(gè)范圍內(nèi)進(jìn)行而不必去查找mid以后的元素。所以可以確定新的查找范圍為top(原來(lái)位置不動(dòng)),bott=mid-1;如果x不小于a(mid),就再進(jìn)行下一個(gè)判斷。,判斷x是否小于a(mid)。當(dāng)然在判斷了x不小于等于a(mid)之后,必然就是大于a(m
7、id)了。這時(shí)x必定落在mid+1和bott的范圍之內(nèi),下一步的查找應(yīng)該在此范圍內(nèi)進(jìn)行,所以新的查找范圍為top=mid+1和bott(原來(lái)位置不動(dòng))。,在確定了新的查找范圍后,重復(fù)進(jìn)行以上比較;在兩種條件下不再重復(fù)進(jìn)行而退出循環(huán):一是已找到,則可退出循環(huán);二是沒(méi)有找到,以至于使bott變得小于top,這時(shí)也應(yīng)該退出循環(huán)。,知識(shí)盤點(diǎn):,“折半”是指先將給定值和所查區(qū)間中間位置的記錄的關(guān)鍵字進(jìn)行比較,若相等,則查找成功,否則,依給定值大于或小于該關(guān)鍵字繼續(xù)在后半個(gè)區(qū)間或前半個(gè)區(qū)間中進(jìn)行查找。,其原理是:先確定待查元素的范圍,將其分為兩半,然后測(cè)試位于中間點(diǎn)元素的值。如果該待查元素的值大于中間點(diǎn)元素,就縮小待查范圍,只測(cè)試中點(diǎn)之后的元素;反之,測(cè)試中點(diǎn)之前的元素,測(cè)試方法同前。(前提是此數(shù)組為升序排列),二分查找法又稱為折半查找法,這是一種效率較高的查找方法。但是采用二分查找法應(yīng)用在一組有一定規(guī)律的數(shù)據(jù),對(duì)于雜亂無(wú)章的一組數(shù)據(jù)則應(yīng)采用順序法。,知識(shí)盤點(diǎn):,