查找算法信息技術(shù)選考_第1頁
查找算法信息技術(shù)選考_第2頁
查找算法信息技術(shù)選考_第3頁
查找算法信息技術(shù)選考_第4頁
查找算法信息技術(shù)選考_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

28/281.(2018·11月浙江選考)數(shù)組a中存儲的是左右交替上升的n個正整數(shù),如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依據(jù)對分查找思想,設(shè)計一個在數(shù)組a中查找數(shù)據(jù)key的程序。實現(xiàn)該功能的VB程序如下,但加框處代碼有錯,請改正。EndIfEndSub答案(1)i<=j(luò)(2)n-i+2或n-j+1或n+1-(i+j)2.(2018·11月浙江選考)數(shù)組a為一組正整數(shù),奇數(shù)在前,偶數(shù)在后。奇數(shù)與偶數(shù)已分別按升序排序。依據(jù)對分查找思想:設(shè)計一個在數(shù)組a中查找數(shù)據(jù)Key的程序。實現(xiàn)該功能的VB程序段如下:i=1:j=10Key=Val(Text1.Text)DoWhilei<=j(luò)m=(i+j)\2Ifa(m)=KeyThenExitDo′ExitDo表示退出循環(huán)IfKeyMod2=1Anda(m)Mod2=0Theneq\x((1))ElseIfKeyMod2=0Anda(m)Mod2=1Theneq\x((2))Elseeq\x((3))EndIfLoopIfi>jThens=“沒有找到!”Elses=“位置:”+Str(m)Text2.Text=s上述程序中方框處可選語句為:①i=m+1②j=m-1③IfKey<a(m)Thenj=m-1Elsei=m+1則(1)、(2)、(3)處語句依次是()A.①、②、③ B.①、③、②C.②、①、③ D.③、②、①答案C3.(2017·11月浙江選考)某算法的VB程序段如下:i=1:j=7:s=””Key=Int(Rnd*100)DoWhilei<=j(luò)m=(i+j)\2IfKey=a(m)Thens=s+”M”:ExitDo′ExitDo表示退出循環(huán)ElseIfKey<a(m)Thenj=m-1:s=s+”L”Elsei=m+1:s=s+”R”EndIfLoopText1.Text=s數(shù)組元素a(1)到a(7)的值依次為“24,35,38,41,45,69,78”。執(zhí)行該程序段后,文本框Text1中顯示內(nèi)容可能的是()A.RL B.LMR C.RLR D.LRLM答案C對分查找核心代碼1.在升序的數(shù)列d(1)至d(n)中查找key。用i表示開始位置下標,用j表示結(jié)束位置下標,m表示中間位置下標。若找到,輸出該數(shù)據(jù)所在位置pos.如果pos=0表示沒有找到。pos=0:c=0:i=1:j=nDoWhilei<=j(luò)′進入查找的條件,i與j的關(guān)系m=Int((i+j)/2)c=c+1′表示查找次數(shù)Ifd(m)=KeyThenpos=m′找到,用xb記錄下標位置ExitDo′退出循環(huán)ElseIfKey<d(m)Thenj=m-1Elsei=m+1EndIfLoopIfpos=0ThenText2.Text=“找不到”ElseText2.Text=“在數(shù)組中位置為”+Str(pos)+“共查找了”+Str(c)+“次”EndIfN個數(shù)最多的查找次數(shù)N個數(shù)最多的查找次數(shù)最多的查找次數(shù)為Int(Log2N)+1。常用解題技巧1.列表法用表格列出每次查找的區(qū)間和比較數(shù)的位置及值。2.二叉樹法假設(shè)有10個數(shù)據(jù)1、2、3、4、5、6、7、8、9、10②右2堆依次求出m值(2、8),m值保留在原位,然后把2邊數(shù)分別放入它的左右2個子樹(小的放左子樹,大的放右子樹);③節(jié)點里還有2個及以上數(shù)的,按照上面規(guī)則求m值,m值保留在原位,其他數(shù)放入它的左右2個子樹(小的放左子樹,大的放右子樹);④有左子樹的往左畫條線,代表往左查找失敗的范圍;沒有右子樹的往右畫條線,代表往右查找失敗的范圍?!纠?】某對分查找算法的VB程序段如下:i=1:j=6:n=0:f=False:key=Val(Text1.Text)DoWhilei<=j(luò)andNotfn=n+1m=Fix((i+j)/2)Ifkey=a(m)Thenf=TrueIfkey<a(m)Thenj=m-1Elsei=m+1Loop數(shù)組元素a(1)到a(6)的值依次為“12,19,27,31,46,55”。文本框Text1中輸入“30”后運行該程序,則以上程序段運行結(jié)束后,下列說法不正確的是()A.變量i的值為4 B.變量j的值為5C.變量m的值為4 D.變量n的值為3答案B【變式訓(xùn)練1】某對分查找算法的VB程序段如下:i=1:j=6:n=0:f=False:key=Val(Text1.Text)DoWhilei<=j(luò)andNotfn=n+1m=Fix((i+j)/2)Ifkey=a(m)thenf=TrueIfkey<a(m)thenj=m-1Elsei=m+1Loop數(shù)組元素a(1)到a(6)的值依次為“12,19,27,31,46,55”。文本框Text1中輸入“31”后運行該程序,則以上程序段運行結(jié)束后,下列說法不正確的是()A.變量i的值為4 B.變量j的值為5C.變量m的值為4 D.變量n的值為3答案B【例2】一組“非降序”的數(shù)據(jù)分別存儲在數(shù)組元素a(1)……a(n)中,用對分查找算法在數(shù)組a中查找key值所在位置,如果有重復(fù)的元素,則顯示最小的位置。部分VB程序如下:Key=Val(Text1.Text)i=1:j=nDoWhilei<=j(luò)m=(i+j)\2Ifa(m)>KeyThenj=m-1Elseifa(m)<KeyTheni=m+1ElseIf__________Thenj=m-1ElseLabel2.Caption=Str(Key)+“的起始位置是”+Str(m):ExitDoEndIfEndIfLoopIfi>jThenLabel2.Caption=“找不到”+Str(Key)要使程序?qū)崿F(xiàn)上述算法思想,則劃線處的語句為()A.a(chǎn)(m-1)=keyB.a(chǎn)(m)=keyC.m-1>0anda(m-1)=keyD.m-1>0anda(m)=key答案C【變式訓(xùn)練2】某對分查找算法的VB程序段如下:L=1:R=10:Key=21DoWhileL<=Rm=(L+R)\2Ifa(m)<=KeyThenL=m+1ElseR=m-1Loop數(shù)組元素a(1)到a(10)的值依次為3,9,21,21,21,21,27,28,39,40,執(zhí)行該程序段,變量R、a(R)的值分別是()A.2,9 B.3,21 C.6,21 D.7,27答案C【例3】某對分査找算法的VB程序段如下:Key=Int(Rnd*100)i=1:j=7:s=""DoWhilei<=j(luò)m=(i+j)\2IfKey=a(m)Thens=s+“M”:ExitDoIfKey<a(m)Thenj=m-1:s=s+“L”Elsei=m+1:s=s+“R”EndIfLoopText1.Text=sText1.Text=s數(shù)組元素a(1)到a(7)的值依次為“25,36,39,42,47,66,78”,執(zhí)行該程序段,文本框Text1中顯示的內(nèi)容是“RLR”,則可以確定隨機產(chǎn)生的Key值范圍是()A.(25,36) B.(47,66)C.(66,78) D.(78,100)答案B【變式訓(xùn)練3】若數(shù)組元素d(1)到d(8)的值依次為“92,88,71,64,43,28,5,2”,查找某Key值的VB程序段如下:n=0:i=1:j=8:Key=Val(Text1.Text)DoWhilei<=j(luò)m=(i+j)\2IfKey=d(m)ThenExitDo′ExitDo表示退出循環(huán)IfKey>d(m)Thenj=m-1:n=n-1Elsei=m+1:n=n+1EndIfLoopLabel1.Caption=Str(n)當(dāng)輸入不同的Key值,運行該程序段后,在標簽Label1中顯示的不同結(jié)果共有()A.5種B.6種C.7種D.8種答案D一、選擇題1.某對分査找算法的VB程序段如下:i=1:j=9:n=0key=Val(Text1.Text)DoWhilei<=j(luò)n=n+1m=Fix((i+j)/2)Ifkey=d(m)ThenExitDo′ExitDo表示退出循環(huán)Ifkey<d(m)Thenj=m-1Elsei=m+1Loop數(shù)組元素d(1)到d(9)的值依次為“7,12,18,25,39,58,61,72,86”。若該程序段運行結(jié)束后,n的值為2,則key的值是()A.39 B.18或61 C.18或72 D.12或61答案D2.某公司的員工管理系統(tǒng)中有1200條員工記錄(每條員工記錄已按員工編號升序排序),現(xiàn)用對分查找法搜索一員工信息,開始搜索的記錄范圍為1200條,若第5次對分查找后還需繼續(xù)搜索,則第6次搜索的記錄范圍內(nèi)的記錄數(shù)為()A.18 B.19 C.36 D.75答案C3.在10000條有序記錄集中查找,沒有找到相應(yīng)的記錄,則至少查找的次數(shù)為()A.13 B.14 C.15 D.10000答案B4.某對分查找算法的VB程序段如下:flag=Falsei=0:j=7:c=0DoWhilei<=j(luò)Andflag=Falsem=Fix((i+j)/2+0.5)IfKey=a(m)Thenflag=TrueIfKey<a(m)Thenj=m-1Elsei=m+1c=c+1Loop數(shù)組元素a(0)到a(7)的值依次為“1,3,30,46,69,72,84,90”,key的值為85.若該程序段執(zhí)行后,以下說法中正確的是()A.i=6 B.j=7 C.m=7 D.c=4答案C5.某查找算法的部分VB程序代碼如下:i=1∶j=8∶k=0key=95DoWhilei<=j(luò)k=k+1m=Int((i+j)/2)Ifkey=a(m)ThenExitDoIfkey<a(m)Thenj=m-1Elsei=m+1Loop數(shù)組元素a(1)到a(8)的數(shù)據(jù)依次為“12,28,49,56,67,88,95,100”,該程序運行過程中,當(dāng)變量k的值為2時,對應(yīng)查找的a(m)值是()A.28 B.56 C.88 D.95答案C6.已知一無序數(shù)組A中的元素為“90,15,40,72,65,32,81,6”通過引入數(shù)組a元素按升序排列時的下標,b數(shù)組元素為“8,2,6,3,5,4,7,1”,使得a(b(1))<=a(b(2))<=a(b(3))……<=a(b(n)),從而對數(shù)組a中的數(shù)據(jù)進行對分查找。部分程序如下:i=1:j=8:c=0Key=Val(text1.Text)DoWhilei<=j(luò)m=Int((i+j)/2)t=b(m)c=c+1Ifa(t)=KeyThenp=t:ExitDoIfa(t)<KeyTheni=m+1Elsej=m-1EndIfLoop當(dāng)文本框Text1中輸入的值為32時,程序運行結(jié)束后變量c的值是()A.1 B.2 C.3 D.4答案C7.已知數(shù)組元素a(1)到a(8)的值依次為89,78,67,56,45,34,23,12,若在Text1中輸入12,然后執(zhí)行以下程序段:Key=Val(Text1.Text)Text2.Text=””i=1:j=8:f=FalseDoWhilei<=j(luò)AndNotfm=(i+j)\2A.567867 B.465C.423 D.563445答案C8.把學(xué)生成績由高到低排序之后,按姓名在前、成績在后的順序依次存儲在數(shù)組a中,例如(“張三”,“97”,“李四”,“92”,“王五”,“87”……)設(shè)計一個VB程序,利用對分查找實現(xiàn)在數(shù)組a中查找成績?yōu)镵ey的學(xué)生姓名。程序段如下:i=1:j=n:Key=Val(Text1.Text)DoWhilei<=j(luò)m=____①____IfVal(a(m))>KeyTheni=mLoopj=j(luò)+1DoWhilej<=nIfVal(a(2*j))=KeyThenList1.AddItema(2*j-1)+””+a(2*j)ElseExitDoEndIfj=j(luò)+1Loop劃線處應(yīng)該填的語句是()A.(i+j)\2 B.(i+j)/2C.((i+j)\2)*2 D.((i+j)\2/2答案C9.某對分查找算法的VB程序段如下:i=1:j=8:t=0Key=Int(Rnd()*18)+4DoWhilei<=j(luò)m=Int((i+j)/2)t=t+1Ifa(m)=KeyThenExitDoElseIfa(m)>KeyThenj=m-1Elsei=m+1EndIfLoop數(shù)組元素a(1)到a(8)的值依次為“2,3,12,15,18,19,20,22”,該程序段運行結(jié)束后,變量t達到最大值時的Key值可能是()A.5 B.18 C.21 D.23答案C10.程序段如下所示:i=1:j=10:flag=Truen=0:Key=Val(Text1.Text)DoWhilei<=j(luò)Andflag=Truem=(i+j)\'2Ifa(m)=KeyThenflag=FalseElseifa(m)>KeyTheni=m+1:n=n-1Elsej=m-1:n=n+1EndIfLoop數(shù)組元素a(1)到a(10)依次是99,94,90,87,70,69,60,56,45,36,變量n的值最終是0,則文本框Text1輸入的數(shù)字可能是()A.100 B.87 C.69 D.41答案C11.?dāng)?shù)組a為一組循環(huán)有序不重復(fù)的數(shù)組,如(a(1)=26,a(2)=41,a(3)=100,a(4)=5,a(5)=7,a(6)=9)。依據(jù)對分查找思想:設(shè)計一個在數(shù)組a中查找數(shù)據(jù)Key并顯示在列表框的程序,界面如圖所示。實現(xiàn)該功能的VB程序段如下:1=1:r=6Key=Val(Text1.Text)DoWhilel<=rm=Int((l+r)\'2)Ifa(m)=KeyTheneq\x((1))ExitDoElseIfa(m)>=a(l)Theneq\x((2))ElseIfa(m)<a(l)Theneq\x((3))EndIfLoop上述程序中方框處可選語句為:①Ifa(m)<KeyAnda(r)>=KeyThenl=m+1Elser=m-1②List1.AddItem“第”+Str(m)+”值是”+Str(a(m))③Ifa(m)>KeyAnda(l)<=KeyThenr=m-1Elsel=m+1則(1)、(2)、(3)處語句依次是()A.③①② B.②①③ C.①③② D.②③①答案D12.某程序代碼如下:答案D13.某對分査找算法的VB程序段如下:Dimd(1To63)AsInteger,iAsInteger,sAsIntegerFori=1To63d(i)=iNextiKey=Int(Rnd*63)+1s=0:i=1:j=63DoWhilei<=j(luò)m=(i+j)\2IfKey=d(m)ThenExitDo′ExitDo表示退出循環(huán)IfKey<d(m)Thenj=m-1:s=2*sElsei=m+1:s=2*s+1EndIfLoop若運行該程序段后,標簽Label1中顯示的結(jié)果是28,則查找的key值是()A.28 B.29 C.57 D.58答案C二、非選擇題14.編寫VB程序,實現(xiàn)如下功能:在文本框Text1中輸整數(shù)x,單擊“查找刪除”按鈕Command1,在數(shù)組a(從小到大排列并顯示在標簽Label1中)中查找該數(shù)。若找到,則從數(shù)組a中刪除該數(shù)(該數(shù)后的數(shù)組元素都往前移一位),并在標簽Label2中顯示刪除后的結(jié)果(運行效果如圖所示);否則在標簽Label2中顯示“該數(shù)沒有找到”。請在劃線處填入合適代碼。Dima(1To10)AsIntegerPrivateSubForm_Load()′產(chǎn)生10個升序的隨機數(shù)并顯示在Label1,代碼略EndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,mAsInteger,kAsIntegerDimxAsInteger,fAsBoolean,sAsStringx=Val(Text1.Text)i=1:j=10:f=FalseDoWhile____①____m=(i+j)\2Ifa(m)=xThenf=TrueElseIf____②____Theni=m+1Elsej=m-1EndIfLoopIff=TrueThenFork=mTo9____③______NextkFork=1To9′逐個顯示刪除后的數(shù)組元素s=s+Str(a(k))+””NextkElses=”該數(shù)沒有找到”EndIfLabel2.Caption=sEndSub答案①i<=j(luò)Andf=False②a(m)<x③a(k)=a(k+1)15.編寫VB程序,實現(xiàn)如下功能:在左邊的文本框Text1中輸入字符串,單擊“加密”按鈕Command1時,逐個字符進行加密,加密過程是:先在“加密表”m中找到相應(yīng)字符,再得到其所對應(yīng)位置的密鑰Text3(下方),并在右邊的文本框Text2中顯示密文,運行效果如圖所示。本題不考慮解密問題。實現(xiàn)上述功能的VB代碼如下:(1)如圖所示,若將Text3中的密鑰改為:“I.am.a.good.student.from.Zhejiang”(不含雙引號),文本框Text1中依然輸入“zjks”,單擊“加密”按鈕Command1,則在文本框Text2中顯示的是________。(2)請在劃線處填入合適代碼。PrivateSubCommand1_Click()DimsAsString,mAsStringDimtAsStrings1=Len(Text3.Text)Ifs1<26ThenText2.Text=”請重新輸入密鑰!”ExitSubEndIfs=Text1.Textn=Len(s)Fori=1Tonk=Mid(s,i,1)m=”abcdefghijklmnopqrstuvwxyz”a=1:b=26DoWhilea<=bc=____①____Ifk=Mid(m,c,1)ThenExitDoEndIfIf____②____Thenb=c-1Elsea=c+1EndIfLoops3=Text3.Textt=t+____③____NextiText2.Text=tEndSub答案(1)Zodt(2)①int((a+b)/2)或(a+b)16.對分查找算法可用于求解方程的近似解?,F(xiàn)要求方程x3-4x2+x+5=0的一個近似解,可設(shè)f(x)=x3-4x2+x+5,若有區(qū)間[a,b],使f(a)與f(b)異號,則該區(qū)間內(nèi)必存在該方程的一個解。小吳為此編寫了VB程序,功能如下:分別在文本框Text1和Text2中輸入求解的區(qū)間值a和b(a<b),單擊“計算”按鈕Command1,若該區(qū)間必有解,則求解出該區(qū)間內(nèi)的一個近似解(精確到10-5),否則提示“重新輸入?yún)^(qū)間”,計算后的相關(guān)結(jié)果顯示在列表框List1中。程序運行界面如下圖所示。實現(xiàn)上述功能的VB程序如下,請在劃線處填上合適的代碼。PrivateSubCommand1_Click()DimaAsDouble,bAsDouble,mAsDouble,xAsDoubleDimymAsDouble,ybAsDoublea=Val(Text1.Text):b=Val(Text2.Text)Ifa>bThent=a:a=b:b=tDoWhile____①____m=(a+b)/2ym=m^3-4*m^2+m+5yb=b^3-4*b^2+b+5IfAbs(ym)<0.00001ThenExitDoIf____②____Thenb=mElsea=mEndIfLoopText3.Text=Str(Int(m*10000)/10000)EndSub答案①a<=b②yb*ym>017.如圖a所示,已有若干學(xué)生從1開始編號,在文本框Text1中輸入新增的學(xué)生姓名,填補到空缺的學(xué)號(2、3、6、11)位置。填補規(guī)則:從最小號開始依次填補。單擊“新增”按鈕后在列表框List1中完整顯示所有學(xué)生信息,如圖b所示。實現(xiàn)上述功能的VB代碼如下,但加框處有錯,請改正。DimnAsInteger′學(xué)生人數(shù)Dima(1To100)AsInteger′存儲學(xué)生的學(xué)號Dimb(1To100)AsString′存儲學(xué)生的姓名PrivateSubForm_Load()′從數(shù)據(jù)庫中讀取學(xué)生學(xué)號、學(xué)生姓名和總?cè)藬?shù),分別存儲在數(shù)組a、數(shù)組b和變量n中,代碼略。EndSubPrivateSubCommand1_Click()DimLAsInteger,RAsIntegerDimmAsInteger,keyasStringkey=Text1.TextL=1:R=nDoWhileL<=Rm=(L+R)\'2Ifeq\x(a(m)<key)Then′(1)L=m+1ElseR=m-1EndIfLoopFori=eq\x(nTomStep-1)′(2)a(i+1)=a(i)b(i+1)=b(i)Nextin=n+1a(i+1)=Lb(i+1)=Key′插入后的結(jié)果顯示在列表框List2,代碼略。EndSub答案(1)a(m)=m或a(m)<=m(2)nToLStep-118.查找最接近的數(shù)。編寫一個查找最接近數(shù)的VB程序:程序運行時,在文本框Text1中輸入產(chǎn)生隨機數(shù)的個數(shù)(1到100之間),單擊命令按鈕“產(chǎn)生隨機數(shù)并升序排列”后,在列表框List1中顯示已經(jīng)按升序排列后的隨機整數(shù)。然后在文本框Text2中輸入要查找的整數(shù),單擊命令按鈕“查找”后,在標簽Label3中顯示隨機整數(shù)序列中與待查找數(shù)最接近的整數(shù)(當(dāng)最接近的數(shù)有2個時,輸出較大的一個)。程序運行效果如圖所示。實現(xiàn)上述功能的VB代碼如下,請在劃線處填入合適代碼。DimnAsInteger′存儲隨機數(shù)的個數(shù)Dimf(1To100)AsBoolean′f(i)為true時表示隨機整數(shù)i已經(jīng)產(chǎn)生過Dima(1To100)AsInteger′依次存放升序排序后的n個隨機數(shù)PrivateSubCommand1_Click()′命令按鈕”產(chǎn)生隨機數(shù)并升序排列”的單擊事件DimiAsIntegerRandomizeFori=1To100f(i)=FalseNextin=Val(Text1.Text)Fori=1Tont=Int(Rnd*100+1)DoWhilef(t)=Truet=Int(Rnd*100+1)Loop____①____Nextij=0Fori=1To100′實現(xiàn)排序并輸出Iff(i)=TrueThenj=j(luò)+1a(j)=____②____List1.AddItemStr(i)EndIfNextiEndSubPrivateSubCommand2_Click()′命令按鈕”查找”的單擊事件DimkeyAsIntegerkey=Val(Text2.Text)Ifkey<=a(1)ThenLabel3.Caption=Str(a(1)):ExitSubIfkey>=a(n)ThenLabel3.Caption=Str(a(n)):ExitSubL=1:R=nDoWhileL<=R′找到與key較為接近的兩個數(shù)a(R)和a(L)答案①f(t)=True②i③Abs(a(R)-Key)<abc(a(L)-Key)19.?dāng)?shù)組a中存儲的是一組正整數(shù),特征是:①以三個數(shù)為一組的話,每組中任意一個數(shù)都比前面一組中的任意一個數(shù)要大;②每組中三個數(shù)依次遞減;③數(shù)組中數(shù)的總個數(shù)為3的倍數(shù)。依據(jù)對分查找思想,設(shè)計一個在數(shù)組a中查找數(shù)據(jù)key的程序。實現(xiàn)該功能的VB程序如下,但加框處代碼有錯,請改正。PrivateSubCommand1_Click()Constn=15Dima(1Ton)AsInteger,searchAsInteger,keyAsIntegerDimiAsInteger,jAsInteger,mAsInteger′讀取一組正整數(shù),按上述規(guī)則存入數(shù)組a中,代碼略。key=Val(Text1.Text)i=1:j=n:search=0DoWhilei<=j(luò)m=(i+j)\2IfmMod3<>0Thenm=m-2′(1)把m調(diào)整到三個一組的最后一個數(shù)的位置Ifkey=a(m)Thensearch=m:ExitDoElseIfkey<a(m)Thenj=m-3ElseIfkey<=a(m-2)Then′(2)i=m+1ElseIfkey=a(m-2)Thensearch=m-2:ExitDoElseIfkey=a(m-1)Thensearch=m-1:ExitDoElsesearch=0:ExitDoEndIfLoopIfsearch<>0ThenText2.Text=Str(search)ElseText2.Text=”找不到”EndIfEndSub答案(1)m-(3-mMod3)(2)key<a(m-2)20.“輪轉(zhuǎn)后有序數(shù)組(RotatedSortedArray)”是將有序數(shù)組取其中某一個數(shù)為分割點,將其之前的所有數(shù)都輪轉(zhuǎn)到數(shù)組的末尾所得。比如{7,11,13,17,2,3,5}就是一個輪轉(zhuǎn)后的有序數(shù)組,原有序數(shù)組中的子串{2,3,5}被輪轉(zhuǎn)到了數(shù)組的末尾處。對于一個輪轉(zhuǎn)后有序數(shù)組arr也可以進行二分查找,算法思路如下(以升序為例):每次根據(jù)查找的左側(cè)位置L和右側(cè)位置R求出中間位置M后,M左邊[L,M]和右邊[M+1,R],這兩部分中至少一個是有序的(可根據(jù)中間位置數(shù)據(jù)和邊界數(shù)據(jù)的大小關(guān)系判斷)。arr[M]和待查找數(shù)據(jù)Key比較①arr[M]=Key,返回M的值②若M位置的右側(cè)有序,當(dāng)待查找數(shù)據(jù)

溫馨提示

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

評論

0/150

提交評論