資源簡介 (共20張PPT)對分查找變式基礎知識key不確定情況key確定情況代碼選填情況基礎知識(1)基本理念(2)基本代碼(3)查找次數(4)中值情況m=(i+j)\2m=Int((i+j))/2m=Int(i+j+1)\2m=Fix((i+j)/2)m=Fix((i+j)/2+0.5)m=Fix((i+j+0.5)/2)左左右左右左1.某對分查找算法的部分代碼如下:i=1:j=1000:flag=True:p=0key=val(Text1.Text)DoWhilei<=jAndflagm=(i+j)\2p=p+1ifa(m)=keyThenflag=Falseifa(m)>keyThenj=m-1Theni=m+1Loop數組元素a(1)到a(1000)中存放著升序排列的數據。下列說法正確的是()A.若key的值小于a(1),則執行該段程序后,變量j的值等于1B.若key的值等于a(1),則執行該段程序后,變量p的值等于10C.若key的值等于a(1000),則執行該段程序后,變量i的值等于1001D.無論key的值是否在數值中a中,執行該段程序后,變量i的值均不可能等于m基礎知識key確定情況(1)觀察key的值(2)注意分支語句代碼塊的變化(3)通過輸出進行推導key確定情況1.數組元素a(0)到a(9)的值依次為“15,20,25,30,35,40,45,50,55,60”,文本框Text1中輸入的是40,執行該程序段,下列描述正確的是()Key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)/2+0.5)s=s+1ifKey=a(m)ThenLabel1.Caption=Label1.Caption+”→”+Str(m)ExitDoEndififKeyThenj=m-1Elsei=m+1Label1.Caption=Label1.Caption+”→”+Str(m)LoopLabel2.Caption=“經歷”+Str(s)+“步”A.標簽Label1顯示內容為“→4→7→5”B.標簽Label2顯示內容為“歷經1步”A.該程序為順序結構,查找次數為3A.該程序為對分查找,查找次數為3key確定情況2.已知數組元素a(1)到a(9)的值依次為19,28,37,46,55,64,73,82,91,若在Text1中輸入29,然后執行以下程序段:Key=Val(Text1.Text)\10Text2.Text=””i=1:j=9:f=FalseDoWhilei<=jAndNotfm=(i+j)\2ifa(m)Mod10=KeyThensearch=mf=TrueElseifa(m)Mod10>KeyTheni=m+1Elsej=m-1EndifText2.Text=Text2.Text+Str(m)Loop則在執行該程序后,Text2中顯示的內容是()A.52B.578C.552837D.553728key不確定情況(1)觀察key的取值(2)注意分支語句代碼塊的變化(3)通過二叉樹求解key不確定情況1.a(1)=2:a(2)=4:a(3)=5:a(4)=6:a(5)=8:a(6)=10:a(7)=11:a(8)=12n=0Key=int(Rnd7)+2L=1:R=8DoWhileL<=Rm=(L+R)\2ifKey=a(m)ThenExitDoElseifa(m)ThenL=m+1n=n+1ElseR=m-1n=n-1LoopprintStr(n)則程序運行后,輸出的結果不可能是()A.0B.1C.-1D.-2key不確定情況2.某對分查找算法的VB程序段如下:Key=int(Rnd49)2+1s=0:i=1:j=10DoWhilei<=jm=(i+j)\2ifKey=a(m)ThenExitDoifKeyThenj=m-1:s=2sElsei=m+1:s=2s+1EndifLoop數組元素a(1)到a(10)的值依次為“2,6,7,15,20,24,27,43,52,63”,執行該程度段后,s的值不可能為()A.2B.3C.5D.15代碼選填情況(1)關注填空區域(2)考慮最不利情況代碼選填情況1.用對分查找的方法求不等式2x+3x-5≤n(n≥0)的最大正整數解,編寫的VB程序段如下:PrivateSubCommand1_Click()DimLAsInteger,RAsInteger,nAsIntegerxAsIntegern=Val(Text1.Text)L=1R=n+1DoWhile①x=(L+R)\2if2^X+3x-5<=nThenL=x+1ElseR=x-1LoopLabel1.Cption=”方程2^X+3x-5<=n的最大正整數解為:”+②EndSu要使程序實現上述算法思想,則橫線上的語句是()A.①L②Str(L)B.①L②Str(R)C.①L<=R②Str(L)D.①L<=R②Str(R)代碼選填情況2.某vb程序段如下:L=1:R=10:n=10:key=78DoWhileL<=Rm=Fix((L+R)/2)if①ThenR=m-1ElseL=m+1EndIfLoopFori=1ToRList1.AdditemStr(a(i))Nexti數組元素a(1)到a(10)的值依次為86,78,78,77,73,69,60,54,54,51,若執行該程序段后,列表框List1中輸出的數據個數為3,則①處的代碼為()A.Key>a(m)B.Key>=a(m)C.KeyD.Key<=a(m)實戰訓練1.有如下VB程序段:i=1:j=63:n=0DoWhilei<=jM=(i+j)\2IfKey=a(m)ThenExitDoElselfKey<a(m)ThenJ=m-1:n=n-1ElseI=m+1:n=n+1EndifLoop數組元素a(1)到a(63)存放著遞增的數據。若執行該程序段后n的值為6,則下列表達式成立的是()A.keyB.key=a(1)C.key=a(63)D.key>a(63)2.有VB程序段如下:a(1)=2:a(2)=2:a(3)=5:a(4)=6:a(5)=7Key=2i=1:j=5:flag=FalseDoWhilei<=jAndNotFlagm=(i+j)\2ifKey=a(m)Thens=”找到第”+Str(m)+“個”flag=True:ExitDoElseifKeyThenj=m-1Elsei=m+1Endifs=str(m)+sLoopLabel1.Caption=s實戰訓練執行該程序后,在標簽Label1中顯示的內容是()A.13B.31C.找到第1個D.找到第2個實戰訓練3.某對分查找算法的VB程序段如下:i=1:j=8:t=0key=int(Rnd()7)+14DoWhilei<=jm=int((i+j)/2)t=t+1ifa(m)=keyThenExitDoElseifa(m)>KeyThenj=m-1Elsei=m+1EndifEndifLoop數組元素a(1)到a(8)的值依次為“2,11,14,15,18,19,20,22”,執行該程度段后,變量t的最大值可能是()A.1B.2C.3D.4實戰訓練4.數組元素a(1)-a(2n)中存儲的一批正整數,以兩個數為一組,每組中兩個數均比前面一組的兩個數要大。現用對分查找的思想,設計一個在數組a中查找數據key的程序,如果找到key,在標簽Label1上顯示“yes”,否則顯示“no”。Key=Val(Text1.Text)i=1:j=n2:flag=FalseDoWhilei+1<=jAndNotflagm=(i+j)\2If①Thenm=m-1Ifa(m)=Keyora(m+1)=KeyThenFlag=TrueElseifa(m)>keyThen②Else③EndifLoopIfa(i)=KeyOra(j)=KeyThenflag=TrueIfflagThenLabel1.Caption=”yes”ElseLabel1.Caption=”no”劃線處的代碼正確的是()A.①mMod2=1②j=m-1③i=m+2B.①mMod2=0②j=m-1③i=m+2C.①mMod2=1②j=m-2③i=m+2D.①mMod2=0②j=m-2③i=m+2小結1.key確定情況2.key不確定情況3.代碼選填情況中小學教育資源及組卷應用平臺對分查找變式【基礎知識】1.某對分查找算法的部分代碼如下:i=1:j=1000:flag=True:p=0key=val(Text1.Text)DoWhilei<=jAndflagm=(i+j)\2p=p+1ifa(m)=keyThenflag=Falseifa(m)>keyThenj=m-1Theni=m+1Loop數組元素a(1)到a(1000)中存放著升序排列的數據。下列說法正確的是()A.若key的值小于a(1),則執行該段程序后,變量j的值等于1B.若key的值等于a(1),則執行該段程序后,變量p的值等于10C.若key的值等于a(1000),則執行該段程序后,變量i的值等于1001D.無論key的值是否在數值中a中,執行該段程序后,變量i的值均不可能等于m【key確定情況】技巧:(1)觀察key的值(2)注意分支語句代碼塊的變化(3)通過輸出進行推導1.數組元素a(0)到a(9)的值依次為“15,20,25,30,35,40,45,50,55,60”,文本框Text1中輸入的是40,執行該程序段,下列描述正確的是()Key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)/2+0.5)s=s+1ifKey=a(m)ThenLabel1.Caption=Label1.Caption+”→”+Str(m)ExitDoEndififKeyThenj=m-1Elsei=m+1Label1.Caption=Label1.Caption+”→”+Str(m)LoopLabel2.Caption=“經歷”+Str(s)+“步”A.標簽Label1顯示內容為“→4→7→5”B.標簽Label2顯示內容為“歷經1步”A.該程序為順序結構,查找次數為3A.該程序為對分查找,查找次數為32.已知數組元素a(1)到a(9)的值依次為19,28,37,46,55,64,73,82,91,若在Text1中輸入29,然后執行以下程序段:Key=Val(Text1.Text)\10Text2.Text=””i=1:j=9:f=FalseDoWhilei<=jAndNotfm=(i+j)\2ifa(m)Mod10=KeyThensearch=mf=TrueElseifa(m)Mod10>KeyTheni=m+1Elsej=m-1EndifText2.Text=Text2.Text+Str(m)Loop則在執行該程序后,Text2中顯示的內容是()A.52B.578C.552837D.553728【key不確定情況】技巧:(1)觀察key的取值(2)注意分支語句代碼塊的變化(3)通過二叉樹求解1.a(1)=2:a(2)=4:a(3)=5:a(4)=6:a(5)=8:a(6)=10:a(7)=11:a(8)=12n=0Key=int(Rnd7)+2L=1:R=8DoWhileL<=Rm=(L+R)\2ifKey=a(m)ThenExitDoElseifa(m)ThenL=m+1n=n+1ElseR=m-1n=n-1LoopprintStr(n)則程序運行后,輸出的結果不可能是()A.0B.1C.-1D.-22.某對分查找算法的VB程序段如下:Key=int(Rnd49)2+1s=0:i=1:j=10DoWhilei<=jm=(i+j)\2ifKey=a(m)ThenExitDoifKeyThenj=m-1:s=2sElsei=m+1:s=2s+1EndifLoop數組元素a(1)到a(10)的值依次為“2,6,7,15,20,24,27,43,52,63”,執行該程度段后,s的值不可能為()A.2B.3C.5D.15【代碼選填情況】技巧:(1)關注填空區域(2)考慮最不利情況1.用對分查找的方法求不等式2x+3x-5≤n(n≥0)的最大正整數解,編寫的VB程序段如下:PrivateSubCommand1_Click()DimLAsInteger,RAsInteger,nAsIntegerxAsIntegern=Val(Text1.Text)L=1R=n+1DoWhile①x=(L+R)\2if2^X+3x-5<=nThenL=x+1ElseR=x-1LoopLabel1.Cption=”方程2^X+3x-5<=n的最大正整數解為:”+②EndSub要使程序實現上述算法思想,則橫線上的語句是()A.①L②Str(L)B.①L②Str(R)C.①L<=R②Str(L)D.①L<=R②Str(R)2.某vb程序段如下:L=1:R=10:n=10:key=78DoWhileL<=Rm=Fix((L+R)/2)if①ThenR=m-1ElseL=m+1EndIfLoopFori=1ToRList1.AdditemStr(a(i))Nexti數組元素a(1)到a(10)的值依次為86,78,78,77,73,69,60,54,54,51,若執行該程序段后,列表框List1中輸出的數據個數為3,則①處的代碼為()A.Key>a(m)B.Key>=a(m)C.KeyD.Key<=a(m)【實戰演練】有如下VB程序段:i=1:j=63:n=0DoWhilei<=jM=(i+j)\2IfKey=a(m)ThenExitDoElselfKey<a(m)ThenJ=m-1:n=n-1ElseI=m+1:n=n+1EndifLoop數組元素a(1)到a(63)存放著遞增的數據。若執行該程序段后n的值為6,則下列表達式成立的是()A.keyB.key=a(1)C.key=a(63)D.key>a(63)2.有VB程序段如下:a(1)=2:a(2)=2:a(3)=5:a(4)=6:a(5)=7Key=2i=1:j=5:flag=FalseDoWhilei<=jAndNotFlagm=(i+j)\2ifKey=a(m)Thens=”找到第”+Str(m)+“個”flag=True:ExitDoElseifKeyThenj=m-1Elsei=m+1Endifs=str(m)+sLoopLabel1.Caption=s執行該程序后,在標簽Label1中顯示的內容是()A.13B.31C.找到第1個D.找到第2個3.某對分查找算法的VB程序段如下:i=1:j=8:t=0key=int(Rnd()7)+14DoWhilei<=jm=int((i+j)/2)t=t+1ifa(m)=keyThenExitDoElseifa(m)>KeyThenj=m-1Elsei=m+1EndifEndifLoop數組元素a(1)到a(8)的值依次為“2,11,14,15,18,19,20,22”,執行該程度段后,變量t的最大值可能是()A.1B.2C.3D.4數組元素a(1)-a(2n)中存儲的一批正整數,以兩個數為一組,每組中兩個數均比前面一組的兩個數要大。現用對分查找的思想,設計一個在數組a中查找數據key的程序,如果找到key,在標簽Label1上顯示“yes”,否則顯示“no”。Key=Val(Text1.Text)i=1:j=n2:flag=FalseDoWhilei+1<=jAndNotflagm=(i+j)\2If①Thenm=m-1Ifa(m)=Keyora(m+1)=KeyThenFlag=TrueElseifa(m)>keyThen②Else③EndifLoopIfa(i)=KeyOra(j)=KeyThenflag=TrueIfflagThenLabel1.Caption=”yes”ElseLabel1.Caption=”no”劃線處的代碼正確的是()A.①mMod2=1②j=m-1③i=m+2B.①mMod2=0②j=m-1③i=m+2C.①mMod2=1②j=m-2③i=m+2D.①mMod2=0②j=m-2③i=m+2答案:1.C1.B2.B1.B2.A1.D2.A1.D2.C3.C4.B21世紀教育網www.21cnjy.com精品試卷·第2頁(共2頁)HYPERLINK"http://21世紀教育網(www.21cnjy.com)"21世紀教育網(www.21cnjy.com) 展開更多...... 收起↑ 資源列表 對分查找.pptx 對分查找變式.doc 縮略圖、資源來源于二一教育資源庫