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