信息技術(shù)選考對分查找_第1頁
信息技術(shù)選考對分查找_第2頁
信息技術(shù)選考對分查找_第3頁
信息技術(shù)選考對分查找_第4頁
信息技術(shù)選考對分查找_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

16/16DACCCBDAB某對分査找算法的VB程序段如下:PriateSubComand_Clck()Dimd(1to1)AsInege,iAsIntger,jAsInege,mAsIntgerDimKeyAsIntger,sAsStingKey=IntRnd*50+1)s="":i=1:j=10DoWhiei<jm=(i+j)\2IfKey=d()ThenExitDo IfKey<d()Thenj=m:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopLabl.Capion=sEndSub若數(shù)組元素d(1)到d(10)的值依次為“3,8,9,15,26,28,32,37,45,49”,執(zhí)行該程序段后,標(biāo)簽Label1上顯示的字符串s出現(xiàn)字母“L”和“R”個數(shù)相同的情況有A.1種 B.2種 C.3種 D.4種7如圖a所示,已有若干學(xué)生從1開始編號,在文本框Text1中輸入新增的學(xué)生姓名,填補(bǔ)到空缺的學(xué)號(2、3、6、11)位置。填補(bǔ)規(guī)則:從最小號開始依次填補(bǔ)。單擊“新增”按鈕后在列表框List1中完整顯示所有學(xué)生信息,如圖b所示。實(shí)現(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,代碼略。EndSub8.查找最接近的數(shù)。編寫一個查找最接近數(shù)的VB程序:程序運(yùn)行時,在文本框Text1中輸入產(chǎn)生隨機(jī)數(shù)的個數(shù)(1到100之間),單擊命令按鈕“產(chǎn)生隨機(jī)數(shù)并升序排列”后,在列表框List1中顯示已經(jīng)按升序排列后的隨機(jī)整數(shù)。然后在文本框Text2中輸入要查找的整數(shù),單擊命令按鈕“查找”后,在標(biāo)簽Label3中顯示隨機(jī)整數(shù)序列中與待查找數(shù)最接近的整數(shù)(當(dāng)最接近的數(shù)有2個時,輸出較大的一個)。程序運(yùn)行效果如圖所示。實(shí)現(xiàn)上述功能的VB代碼如下,請?jiān)趧澗€處填入合適代碼。DimnAsInteger′存儲隨機(jī)數(shù)的個數(shù)Dimf(1To100)AsBoolean′f(i)為true時表示隨機(jī)整數(shù)i已經(jīng)產(chǎn)生過Dima(1To100)AsInteger′依次存放升序排序后的n個隨機(jī)數(shù)PrivateSubCommand1_Click()′命令按鈕”產(chǎn)生隨機(jī)數(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′實(shí)現(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)9.?dāng)?shù)組a中存儲的是一組正整數(shù),特征是:①以三個數(shù)為一組的話,每組中任意一個數(shù)都比前面一組中的任意一個數(shù)要大;②每組中三個數(shù)依次遞減;③數(shù)組中數(shù)的總個數(shù)為3的倍數(shù)。依據(jù)對分查找思想,設(shè)計(jì)一個在數(shù)組a中查找數(shù)據(jù)key的程序。實(shí)現(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=”找不到”EndIfEndSub10.“輪轉(zhuǎn)后有序數(shù)組(RotatedSortedArray)”是將有序數(shù)組取其中某一個數(shù)為分割點(diǎn),將其之前的所有數(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ìn)行二分查找,算法思路如下(以升序?yàn)槔?:每次根據(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ù)在右側(cè),則下次在右側(cè)查找,否則在M左側(cè)查找③若M位置的左側(cè)有序,當(dāng)待查找數(shù)據(jù)在左側(cè),則下次在左側(cè)查找,否則在M右側(cè)查找(1)對于輪轉(zhuǎn)后有序數(shù)組{7,11,13,17,2,3,5}使用以上函數(shù)search()查找key值3,所需要的查找次數(shù)為__________。(2)以下VB函數(shù)Search()實(shí)現(xiàn)了對輪轉(zhuǎn)后有序數(shù)組arr進(jìn)行二分查找的過程,如果查詢成功,返回m值,查詢失敗則返回-1。請補(bǔ)充程序中①②③劃線處的代碼:FunctionSearch(keyAsInteger,LAsInteger,RAsInteger)AsInteger______①____DoWhileL<=RAndSearch=-1M=(L+R)\'2Ifarr(M)=keyThenSearch=MElseIf____②____ThenIfarr(L)<=keyAndkey<arr(M)ThenR=M-1ElseL=M+1EndIfElseIf____③____ThenL=M+1ElseR=M-1EndIfEndIfEndIfLoopEndFunction11.(2018·11月浙江選考)數(shù)組a中存儲的是左右交替上升的n個正整數(shù),如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依據(jù)對分查找思想,設(shè)計(jì)一個在數(shù)組a中查找數(shù)據(jù)key的程序。實(shí)現(xiàn)該功能的VB程序如下,但加框處代碼有錯,請改正。桶排序優(yōu)化。桶排序的思想是根據(jù)數(shù)組中各元素的值,依次放入相應(yīng)編號的桶中,最后按順序輸出桶中數(shù)據(jù),即可完成排序。例如:數(shù)據(jù)10、15、8、9、3,桶中的順序如下表:但是,當(dāng)數(shù)據(jù)范圍很大時,需要的桶則非常多,會造成很大的資源浪費(fèi)。為了解決該問題,小張對桶排序進(jìn)行了優(yōu)化,算法思想如下:①先依據(jù)數(shù)組中元素的個位進(jìn)行桶排序;②再依據(jù)數(shù)組中元素的十位進(jìn)行桶排序;直到排序完成。例如:有數(shù)組a中各元素分別為53,3,542,748,17,214,154,63,616,第一趟按個位排序過程如下:①個位填入相應(yīng)桶編號中,并統(tǒng)計(jì)每個桶中數(shù)據(jù)個數(shù)。②計(jì)算索引。計(jì)算方法是從前往后,依次計(jì)算當(dāng)前桶中元素個數(shù)與前一項(xiàng)之和。③按索引從桶中倒序取出數(shù)據(jù),每取一個索引減1。重新排列后為542,53,3,63,214,154,616,17,748。接下來對重新排序后的數(shù)據(jù)以十位、百位依次進(jìn)行桶排序即可完成排序(每一趟排序后數(shù)據(jù)重新排列)。(1)第二趟以十位排序后的結(jié)果中,前4個數(shù)為_____。(數(shù)字間用逗號間隔)(2)現(xiàn)在有n個0~5000的數(shù)據(jù),其VB代碼如下,請?jiān)趧澗€處填入合適的代碼。Constn=10Dima(1Ton)AsIntegerDimtmp(1Ton)AsInteger'臨時數(shù)組,用來保存桶排序后的結(jié)果Dimcount(0To9)AsIntegerDimiAsInteger,jAsIntegerDimsAsInteger,kAsIntegerPrivateSubForm_Load()'待排序數(shù)據(jù)保存在a數(shù)組中,代碼略EndSubPrivateSubCommand1_Click()s=1Fori=1To________Forj=0To9'初始化數(shù)組count(j)=0NextjForj=1Ton'統(tǒng)計(jì)各桶中數(shù)據(jù)個數(shù)k=(a(j)\s)Mod10count(k)=count(k)+1NextjForj=1To9'計(jì)算索引count(j)=__________NextjForj=nTo1Step-1'根據(jù)索引,從桶中取出數(shù)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論