查找算法課件_第1頁(yè)
查找算法課件_第2頁(yè)
查找算法課件_第3頁(yè)
查找算法課件_第4頁(yè)
查找算法課件_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三單元查找算法第三單元查找算法考點(diǎn)與典例考點(diǎn)與典例考點(diǎn)考點(diǎn)1 1 順序查找順序查找 1.1.查找算法查找算法所謂查找就是在指定的數(shù)據(jù)中尋找某一特定的數(shù)據(jù)。所謂查找就是在指定的數(shù)據(jù)中尋找某一特定的數(shù)據(jù)。查找結(jié)果有兩種查找結(jié)果有兩種: :找到找到( (查找成功查找成功) )和未找到和未找到( (查找失敗查找失敗) )。2.2.順序查找的基本思想順序查找的基本思想從第一個(gè)數(shù)據(jù)開(kāi)始從第一個(gè)數(shù)據(jù)開(kāi)始, ,從左往右從左往右( (或從上到下或從上到下) )將數(shù)據(jù)按順序逐個(gè)與給定的關(guān)鍵字將數(shù)據(jù)按順序逐個(gè)與給定的關(guān)鍵字進(jìn)行比較進(jìn)行比較, ,若某個(gè)數(shù)據(jù)和給定的關(guān)鍵字相等若某個(gè)數(shù)據(jù)和給定的關(guān)鍵字相等, ,則查找成

2、功則查找成功, ,找到并輸出第一個(gè)與找到并輸出第一個(gè)與關(guān)鍵字相等的數(shù)據(jù)的位置關(guān)鍵字相等的數(shù)據(jù)的位置; ;反之反之, ,查找失敗。若有查找失敗。若有n n個(gè)數(shù)個(gè)數(shù), ,則可能的最多查找次則可能的最多查找次數(shù)為數(shù)為n n。3.3.順序查找算法基本框架順序查找算法基本框架假設(shè)假設(shè): :要查找的數(shù)為要查找的數(shù)為key,key,待查找的數(shù)存放在數(shù)組待查找的數(shù)存放在數(shù)組d d中。中。ForFor語(yǔ)句框架語(yǔ)句框架: :For i=1 To nFor i=1 To n若若d(id(i)=key,)=key,則表示找到則表示找到, ,做相應(yīng)處理做相應(yīng)處理Next iNext i若若inin表示未找到表示未找到D

3、o WhileDo While語(yǔ)句框架語(yǔ)句框架: :i=1i=1Do While i=nDo While inin表示未找到表示未找到4.4.順序查找的程序?qū)崿F(xiàn)順序查找的程序?qū)崿F(xiàn)在在n n個(gè)數(shù)組元素中依次查找個(gè)數(shù)組元素中依次查找, ,找到第找到第1 1個(gè)滿(mǎn)足條件的值個(gè)滿(mǎn)足條件的值, ,查找即結(jié)束查找即結(jié)束, ,輸出找輸出找到元素所在的位置到元素所在的位置; ;若找不到若找不到, ,輸出輸出“未找到未找到”。程序?qū)崿F(xiàn)程序?qū)崿F(xiàn): :設(shè)設(shè):(1):(1)要查找的數(shù)據(jù)是要查找的數(shù)據(jù)是key(key(在文本框在文本框Text1Text1中輸入中輸入),),查找的數(shù)據(jù)存放在數(shù)查找的數(shù)據(jù)存放在數(shù)組組d d中

4、。中。(2)pos(2)pos為找到數(shù)的位置為找到數(shù)的位置,pos=0,pos=0表示未找到。表示未找到。(3)p(3)p記錄查找的次數(shù)。記錄查找的次數(shù)。key=Val(Text1.Text)key=Val(Text1.Text)ValVal要根據(jù)實(shí)際情況決定是否要添加要根據(jù)實(shí)際情況決定是否要添加p=0p=0pos=0pos=0find=Falsefind=Falsefind=Falsefind=False表示未找到表示未找到,find=True,find=True表示找到表示找到i=1i=1Do While i=n And find=FalseDo While i=n And find=Fa

5、lse表示還沒(méi)找完并且還未找到表示還沒(méi)找完并且還未找到, ,則繼續(xù)查找則繼續(xù)查找,not ,not findfind也可表示為也可表示為find=Falsefind=Falsep=p+1p=p+1If key=If key=d(id(i) Then) Thenpos=ipos=ifind=Truefind=TrueEndIfEndIfi=i+1i=i+1LoopLoopIf find Then If find Then 也可表示為也可表示為If find=True ThenIf find=True ThenText2.Text=Text2.Text=在在d(+Str(posd(+Str(pos

6、)+)+)中中 ElseElseText2.Text=Text2.Text=未找到未找到 EndIfEndIf【典例典例1 1】某查找算法的部分某查找算法的部分VBVB代碼如下代碼如下: :t=Falset=Falsei=0i=0Do While i7 And t = FalseDo While i7 And t = Falsei=i+1i=i+1If If a(ia(i)=key Then t=True)=key Then t=TrueLoopLoopIf t=False Then i=0If t=False Then i=0數(shù)組元素?cái)?shù)組元素a(1)a(1)到到a(7)a(7)的數(shù)據(jù)依次為的

7、數(shù)據(jù)依次為“3,5,1,5,8,9,5”,3,5,1,5,8,9,5”,當(dāng)變量當(dāng)變量keykey值為值為5 5時(shí)時(shí), ,運(yùn)用該算法處理后運(yùn)用該算法處理后, ,變量變量i i的值是的值是( () )A.0A.0B.2B.2C.4C.4D.7D.7解析解析: :本題主要考查的是順序查找的實(shí)現(xiàn)過(guò)程。本程序的功能是查找數(shù)組中本題主要考查的是順序查找的實(shí)現(xiàn)過(guò)程。本程序的功能是查找數(shù)組中第一個(gè)與目標(biāo)數(shù)據(jù)相等的數(shù)第一個(gè)與目標(biāo)數(shù)據(jù)相等的數(shù), ,若找到將其在數(shù)組中的位置賦給變量若找到將其在數(shù)組中的位置賦給變量i,i,結(jié)束查結(jié)束查找找; ;若找不到若找不到, ,變量變量i=0i=0。因?yàn)槟繕?biāo)值。因?yàn)槟繕?biāo)值key=

8、5,key=5,它和數(shù)組中第二個(gè)數(shù)正好相等它和數(shù)組中第二個(gè)數(shù)正好相等, ,因因此此i=2i=2。 答案答案: :B B 【典例典例2 2】 ( (20172017浙江省浙江省4 4月選考月選考) )小王編寫(xiě)了一個(gè)實(shí)現(xiàn)文字查找替換功能小王編寫(xiě)了一個(gè)實(shí)現(xiàn)文字查找替換功能的的VBVB程序程序, ,運(yùn)行界面如圖運(yùn)行界面如圖4-3-14-3-1所示。文本框所示。文本框Text1Text1顯示原文內(nèi)容顯示原文內(nèi)容,Text2,Text2中輸中輸入查找內(nèi)容入查找內(nèi)容,Text3,Text3中輸入替換內(nèi)容中輸入替換內(nèi)容, ,單擊單擊“全部替換全部替換”按鈕按鈕Command1Command1后后,Text4,

9、Text4顯示查找替換的結(jié)果顯示查找替換的結(jié)果,Text5,Text5中顯示替換的次數(shù)中顯示替換的次數(shù),Text6,Text6顯示顯示“查找內(nèi)查找內(nèi)容容”在原文中的起始位置。在原文中的起始位置。實(shí)現(xiàn)上述功能的實(shí)現(xiàn)上述功能的VBVB程序如下程序如下, ,但加框處代碼有錯(cuò)但加框處代碼有錯(cuò), ,請(qǐng)改正。請(qǐng)改正。Private Sub Command1_Click()Private Sub Command1_Click()Dim s As String, Dim s As String, resuleresule As String, pos As String As String, pos As S

10、tringDim count As Integer, i As IntegerDim count As Integer, i As Integeri = 1:count = 0i = 1:count = 0resuleresule = : pos = = : pos = Do While i = Len(Text1.Text)Do While i = Len(Text1.Text)s = Mid(Text1.Text, i, Len(Text2.Text)s = Mid(Text1.Text, i, Len(Text2.Text)If s = Text2.Text ThenIf s = Tex

11、t2.Text Thenresult = result+Text3.Textresult = result+Text3.Textcount = count+1count = count+1pos = pos+Str(count)(1)pos = pos+Str(count)(1)i = i+Len(Text2.Text)i = i+Len(Text2.Text)ElseElseresult = result+Text2.Text(2)result = result+Text2.Text(2)i = i+1i = i+1End IfEnd IfLoopLoopText4.Text = resul

12、tText4.Text = resultText5.Text = Text5.Text = Str(countStr(count) )Text6.Text = posText6.Text = posEnd SubEnd Sub解析解析: :本題利用順序查找算法實(shí)現(xiàn)查找替換的功能。語(yǔ)句本題利用順序查找算法實(shí)現(xiàn)查找替換的功能。語(yǔ)句“If s = If s = Text2.Text Then”Text2.Text Then”表示在原文中找到了所要的查找內(nèi)容時(shí)的情況表示在原文中找到了所要的查找內(nèi)容時(shí)的情況, ,此時(shí)需此時(shí)需要 做 的 是要 做 的 是 : : 將 查 找 內(nèi) 容 用 替 換 內(nèi) 容 代

13、 替將 查 找 內(nèi) 容 用 替 換 內(nèi) 容 代 替 ( r e s u l t = ( r e s u l t = result+Text3.Text);result+Text3.Text);替換次數(shù)計(jì)數(shù)替換次數(shù)計(jì)數(shù)(count=count+1);(count=count+1);記錄起始位置記錄起始位置i(posi(pos= =pos+Str(ipos+Str(i),),添加在字符串添加在字符串pospos中中););查找位置從當(dāng)前位置前進(jìn)查找位置從當(dāng)前位置前進(jìn)Len(Text1.Text)Len(Text1.Text)個(gè)位置個(gè)位置(i=i+Len(Text1.Text)(i=i+Len(Te

14、xt1.Text)。否則。否則, ,將當(dāng)前位置上的字將當(dāng)前位置上的字符 添 加 到 字 符 串符 添 加 到 字 符 串 r e s u l tr e s u l t 中中 , , 因 此因 此 ( 2 )( 2 ) 處 語(yǔ) 句 修 改 為處 語(yǔ) 句 修 改 為result=result+mid(Text1.Text,i,1)result=result+mid(Text1.Text,i,1)。答案答案: :(1)pos+Str(i)(1)pos+Str(i)(2)result=result+mid(Text1.Text,i,1)(2)result=result+mid(Text1.Text,i

15、,1)【典例典例3 3】某某8 8位男生的肺活量數(shù)據(jù)放在數(shù)組元素位男生的肺活量數(shù)據(jù)放在數(shù)組元素a(1)a(1)到到a(8)a(8)中中, ,其數(shù)據(jù)依次其數(shù)據(jù)依次為為“3104,3700,3058, 3222,3621,3329,4233,4540”3104,3700,3058, 3222,3621,3329,4233,4540”。使用順序查找算法。使用順序查找算法查找數(shù)據(jù)查找數(shù)據(jù)3339,3339,則共需查找次數(shù)為則共需查找次數(shù)為( () )A.0A.0B.1B.1C.8C.8D. 9D. 9解析解析: :本題考查的是順序查找算法的實(shí)現(xiàn)過(guò)程。由于給定的數(shù)列中沒(méi)有數(shù)據(jù)本題考查的是順序查找算法的實(shí)

16、現(xiàn)過(guò)程。由于給定的數(shù)列中沒(méi)有數(shù)據(jù)3339,3339,因此需要與數(shù)列中每個(gè)數(shù)進(jìn)行比較因此需要與數(shù)列中每個(gè)數(shù)進(jìn)行比較, ,全部比較完后才知道查找失敗全部比較完后才知道查找失敗, ,因因此共需查找次數(shù)為此共需查找次數(shù)為8 8次。次。答案答案: :C C 考點(diǎn)考點(diǎn)2 2 對(duì)分查找對(duì)分查找 1.1.對(duì)分查找的基本思想對(duì)分查找的基本思想在有序的數(shù)據(jù)序列中在有序的數(shù)據(jù)序列中( (一般存放在數(shù)組中一般存放在數(shù)組中),),首先把要查找的數(shù)據(jù)與數(shù)組中間位首先把要查找的數(shù)據(jù)與數(shù)組中間位置的元素進(jìn)行比較置的元素進(jìn)行比較, ,如果相等如果相等, ,則查找成功并退出查找則查找成功并退出查找; ;否則否則, ,根據(jù)數(shù)組元素

17、的有根據(jù)數(shù)組元素的有序性序性, ,確定數(shù)據(jù)應(yīng)在數(shù)組的前半部分還是在后半部分查找確定數(shù)據(jù)應(yīng)在數(shù)組的前半部分還是在后半部分查找; ;在確定了新的查找范在確定了新的查找范圍后圍后, ,重復(fù)進(jìn)行以上比較重復(fù)進(jìn)行以上比較, ,直到找到或未找到為止。直到找到或未找到為止。重難點(diǎn)剖析重難點(diǎn)剖析對(duì)分查找的前提是被查找的數(shù)據(jù)序列必須是有序。對(duì)分查找的前提是被查找的數(shù)據(jù)序列必須是有序?!拔凑业轿凑业健笔侵府?dāng)指定范圍內(nèi)的起點(diǎn)大于終點(diǎn)仍未找到該數(shù)據(jù)。是指當(dāng)指定范圍內(nèi)的起點(diǎn)大于終點(diǎn)仍未找到該數(shù)據(jù)。2.2.對(duì)分查找算法基本框架對(duì)分查找算法基本框架說(shuō)明說(shuō)明: :要查找的數(shù)為要查找的數(shù)為key,key,待查找的數(shù)存放在數(shù)組待

18、查找的數(shù)存放在數(shù)組d d中。中。i i為查找范圍的起點(diǎn)為查找范圍的起點(diǎn),j,j為查找范圍的終點(diǎn)為查找范圍的終點(diǎn),m,m為范圍為范圍 i,ji,j 的中間位置。的中間位置。i=1i=1j=nj=nDo While i=jDo While ij,ij,則表示未找到則表示未找到3.3.對(duì)分查找程序?qū)崿F(xiàn)對(duì)分查找程序?qū)崿F(xiàn)在在n n個(gè)數(shù)組元素中依次查找個(gè)數(shù)組元素中依次查找, ,找到第找到第1 1個(gè)滿(mǎn)足條件的值個(gè)滿(mǎn)足條件的值, ,查找就結(jié)束查找就結(jié)束, ,輸出找到輸出找到元素所在的位置元素所在的位置; ;若找不到若找不到, ,輸出輸出“未找到未找到”。程序?qū)崿F(xiàn)程序?qū)崿F(xiàn): :設(shè)要查找的數(shù)據(jù)是設(shè)要查找的數(shù)據(jù)是k

19、ey(key(在文本框在文本框Text1Text1中輸入中輸入),),查找的數(shù)據(jù)存放在數(shù)組查找的數(shù)據(jù)存放在數(shù)組d d中。中。在文本框在文本框Text2Text2中輸出查找結(jié)果中輸出查找結(jié)果, ,若找到輸出若找到輸出“找到找到! !位置為位置為:X”,:X”,否則輸出否則輸出“未找到未找到!”!”在文本框在文本框Text3Text3中輸出共查找的次數(shù)。中輸出共查找的次數(shù)。p p表示查找的次數(shù)。表示查找的次數(shù)。核心代碼為核心代碼為( (以升序?yàn)槔陨驗(yàn)槔?:):key = Val(Text1.Text)key = Val(Text1.Text)表示要查找的數(shù)表示要查找的數(shù)p=0p=0表示查找的次

20、數(shù)表示查找的次數(shù)find=Falsefind=False查找的結(jié)果查找的結(jié)果, ,若若find=Truefind=True表示找到表示找到,find=False,find=False表表示未找到示未找到i=1i=1查找范圍的起點(diǎn)查找范圍的起點(diǎn)j=nj=n查找范圍的終點(diǎn)查找范圍的終點(diǎn)Do While i=j And Not findDo While iIf keyd(md(m) Then) Then表示查找的數(shù)比中間位置上的數(shù)大時(shí)表示查找的數(shù)比中間位置上的數(shù)大時(shí)i=m+1i=m+1ElseElse表示查找的數(shù)比中間位置上的數(shù)小時(shí)表示查找的數(shù)比中間位置上的數(shù)小時(shí)j=m-1j=m-1EndIfEnd

21、IfLoopLoopIf Not find Then Text2.Text=If Not find Then Text2.Text=未找到未找到!Text3.Text=Text3.Text=共查找的次數(shù)為共查找的次數(shù)為:+:+Str(pStr(p) )重難點(diǎn)剖析重難點(diǎn)剖析計(jì)算中點(diǎn)位置的語(yǔ)句還可以寫(xiě)成計(jì)算中點(diǎn)位置的語(yǔ)句還可以寫(xiě)成:m=Int(i+j)/2):m=Int(i+j)/2)或或m=Fix(i+j)/2)m=Fix(i+j)/2)。 解析解析: :本題主要考查的是對(duì)分查找算法。在本題主要考查的是對(duì)分查找算法。在0,10,1區(qū)間內(nèi)查找一個(gè)數(shù)區(qū)間內(nèi)查找一個(gè)數(shù), ,第一次第一次取取0,10,1

22、區(qū)間中間值區(qū)間中間值0.5,0.5,每次都減少為原來(lái)的每次都減少為原來(lái)的1/2,1/2,所以答案為所以答案為D D。答案答案: :D D 【典例典例4 4】已知單調(diào)函數(shù)在已知單調(diào)函數(shù)在0,10,1區(qū)間存在一個(gè)區(qū)間存在一個(gè)x x0 0, ,使使f(xf(x0 0)=0)=0?,F(xiàn)用對(duì)分查找?,F(xiàn)用對(duì)分查找算法搜索算法搜索x x0 0的值的值, ,開(kāi)始搜索區(qū)間為開(kāi)始搜索區(qū)間為0,1,0,1,若經(jīng)過(guò)若經(jīng)過(guò)1010次對(duì)分查找后還需繼續(xù)搜次對(duì)分查找后還需繼續(xù)搜索索, ,則第則第1111次搜索區(qū)間的長(zhǎng)度為次搜索區(qū)間的長(zhǎng)度為( () )A.1/2A.1/2 B.1/10 B.1/10C.1/10C.1/102

23、2D.1/2D.1/21010【典例典例5 5】( (20172017浙江浙江1111月選考月選考) )某算法的某算法的VBVB程序段如下程序段如下: :i = 1: j = 7: s = i = 1: j = 7: s = key = key = Int(RndInt(Rnd * * 100) 100)Do While i = jDo While i = jm = (i + j) 2m = (i + j) 2If key = If key = a(ma(m) Then) Thens = s + M: Exit Dos = s + M: Exit DoExit DoExit Do表示退出循環(huán)表

24、示退出循環(huán)ElseIfElseIf key key a(ma(m) Then) Thenj = m - 1: s = s + Lj = m - 1: s = s + LElseElsei = m + 1:s = s + Ri = m + 1:s = s + REnd IfEnd IfLoopLoopText1.Text = sText1.Text = s數(shù)組元素?cái)?shù)組元素a(1)a(1)到到a(7)a(7)的值依次為的值依次為“24,35,38,41,45,69,78”24,35,38,41,45,69,78”。若該程序段執(zhí)。若該程序段執(zhí)行后行后, ,文本框文本框Text1Text1中顯示的內(nèi)容

25、可能是中顯示的內(nèi)容可能是( ( ) )A.RLA.RL B.LMR B.LMR C.RLR C.RLR D.LRLM D.LRLMC C解析解析: :本題主要考查的是對(duì)分查找算法。查找的結(jié)果有成功和不成功兩種本題主要考查的是對(duì)分查找算法。查找的結(jié)果有成功和不成功兩種, ,若若查找成功查找成功, ,則最后輸出則最后輸出M,M,如果查找不成功如果查找不成功, ,則不會(huì)出現(xiàn)則不會(huì)出現(xiàn)M,M,因此因此MM不可能不可能出現(xiàn)在中間出現(xiàn)在中間, ,故故B B選項(xiàng)錯(cuò)誤。對(duì)選項(xiàng)錯(cuò)誤。對(duì) n n 個(gè)數(shù)據(jù)查找個(gè)數(shù)據(jù)查找, ,最多查找次數(shù)為最多查找次數(shù)為 loglog2 2 n+1( n+1(向向下取整下取整) ,7

26、 ) ,7 個(gè)元素最多查找個(gè)元素最多查找3 3次次, ,因此可排除因此可排除 D D 選項(xiàng)。如果查找失敗選項(xiàng)。如果查找失敗, ,則需則需要查找要查找3 3次次, ,即不可能查找即不可能查找2 2次就結(jié)束次就結(jié)束, ,因此因此 A A 選項(xiàng)也錯(cuò)誤。故答案為選項(xiàng)也錯(cuò)誤。故答案為 C C。 【典例典例6 6】( (20172017浙江省浙江省4 4月選考月選考) )某對(duì)分查找算法的某對(duì)分查找算法的VBVB程序段如下程序段如下: :Key = Val(Text1.Text)Key = Val(Text1.Text)i = 1: j = 10i = 1: j = 10Text2.Text = Text2

27、.Text = Do While i =jDo While i =jm=m=Int(i+jInt(i+j) / 2+0.5) / 2+0.5)If Key=If Key=a(ma(m) Then Exit Do) Then Exit Do Exit DoExit Do表示退出循環(huán)表示退出循環(huán)If KeyIf Keya(ma(m) Then j=m - 1 Else i=m+1) Then j=m - 1 Else i=m+1Text2.Text = Text2.Text+Str(a(m)Text2.Text = Text2.Text+Str(a(m)LoopLoop數(shù)組元素?cái)?shù)組元素a(1)a(

28、1)到到a(10)a(10)的值依次為的值依次為“8,17,24,30,36,40,55,58,61,66”,8,17,24,30,36,40,55,58,61,66”,文本框文本框Text1Text1中輸入的值是中輸入的值是30,30,執(zhí)行該程序段執(zhí)行該程序段, ,文本框文本框Text2Text2中顯示的是中顯示的是( () )A.40A.402424B.40B.4024243636C.36C.362424D.36D.3617172424解析解析: :本題主要考查對(duì)分查找代碼執(zhí)行過(guò)程。具體查找過(guò)程如表所示本題主要考查對(duì)分查找代碼執(zhí)行過(guò)程。具體查找過(guò)程如表所示: :Key=30Key=30由此

29、可知由此可知, ,共查找了共查找了4 4次次, ,最后一次滿(mǎn)足最后一次滿(mǎn)足Key=Key=a(ma(m),),執(zhí)行執(zhí)行Exit DoExit Do退出循環(huán)退出循環(huán), ,其其他幾次的他幾次的a(ma(m) )按次序依次顯示在按次序依次顯示在Text2Text2中。中。答案答案: :B B 查找次數(shù)查找次數(shù)i ij jm= m= Int(i+j)/2+0.5)Int(i+j)/2+0.5)a(ma(m) )比較結(jié)果比較結(jié)果1 11 110106 64040KeyKeyKeya(ma(m) )3 34 45 55 53636KeyKey 0 ThenIf pos 0 ThenLabel4.Capti

30、on = Label4.Caption = b(pos)+c(posb(pos)+c(pos) )ElseElseLabel4.Caption = Label4.Caption = 找不到此學(xué)號(hào)找不到此學(xué)號(hào)!End IfEnd IfEnd SubEnd SubFunction Function Search(KeySearch(Key As String) As Integer As String) As IntegerDim i As Integer, j As Integer, m As IntegerDim i As Integer, j As Integer, m As Integer

31、i = 1:j = ni = 1:j = nDo While i = jDo While i 0 Then”“If pos0 Then”可可知知, ,將函數(shù)的返回值保存在變量將函數(shù)的返回值保存在變量pospos中中, ,因此劃線處的代碼為因此劃線處的代碼為pos = pos = Search(x);Search(x);函數(shù)的函數(shù)值是通過(guò)函數(shù)名來(lái)返回的函數(shù)的函數(shù)值是通過(guò)函數(shù)名來(lái)返回的, ,劃線處表示找到的情劃線處表示找到的情況況, ,因此將返回該學(xué)號(hào)在數(shù)組因此將返回該學(xué)號(hào)在數(shù)組a a中的位置中的位置m,m,即劃線處代碼為即劃線處代碼為Search=m;Search=m;數(shù)數(shù)據(jù)已按學(xué)號(hào)升序排序據(jù)已

32、按學(xué)號(hào)升序排序, ,根據(jù)代碼根據(jù)代碼“j=m-1”“j=m-1”可知可知, ,劃線處代碼表示學(xué)號(hào)小劃線處代碼表示學(xué)號(hào)小于于a(m)a(m)的情況的情況, ,因此處代碼為因此處代碼為a(m)Keya(m)Key。答案答案: :pos=pos=Search(xSearch(x) )Search=mSearch=ma(ma(m)Key )Key 【典例典例8 8】編寫(xiě)編寫(xiě)VBVB程序程序, ,實(shí)現(xiàn)如下功能實(shí)現(xiàn)如下功能: :在文本框在文本框Text1Text1中輸入一個(gè)整數(shù)中輸入一個(gè)整數(shù), , 單擊單擊“查找刪除查找刪除”按鈕按鈕Command1,Command1,采用對(duì)分查找法在數(shù)組采用對(duì)分查找法在

33、數(shù)組A(A(從小到大排列從小到大排列, ,并顯示并顯示在標(biāo)簽在標(biāo)簽Label1Label1中中) )中查找該數(shù)。若找到中查找該數(shù)。若找到, ,則從數(shù)組則從數(shù)組A A中刪除該數(shù)中刪除該數(shù)( (該數(shù)后面的數(shù)該數(shù)后面的數(shù)組元素都前移一位組元素都前移一位),),并在標(biāo)簽并在標(biāo)簽Label2Label2中顯示刪除后的結(jié)果中顯示刪除后的結(jié)果, ,否則否則, ,在標(biāo)簽在標(biāo)簽Label2Label2中顯示中顯示“該數(shù)沒(méi)有找到該數(shù)沒(méi)有找到”。程序運(yùn)行效果如圖。程序運(yùn)行效果如圖4-3-34-3-3所示。所示。實(shí)現(xiàn)上述功能的實(shí)現(xiàn)上述功能的VBVB代碼如下代碼如下, ,但加框處代碼有錯(cuò)但加框處代碼有錯(cuò), , 請(qǐng)改正。請(qǐng)改正。Dim A(1 To 10) As Integer Dim A(1 To 10) As Integer 用于保存用于保存1010個(gè)按從小到大順序排列的整數(shù)個(gè)按從小到大順序排列的整數(shù)Form_LoadForm_Load 事件過(guò)程產(chǎn)生事件過(guò)程產(chǎn)生1010個(gè)整數(shù)個(gè)整數(shù), , 按升序保存在數(shù)組按升序保存在數(shù)組A A中中, , 并在標(biāo)簽并在標(biāo)簽Label1Label1中中顯示顯示Private Sub Private Sub Form_LoadForm_Load()()代碼略代碼略End SubEnd SubPrivate Sub Comma

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論