信息技術(shù)選考對(duì)分查找_第1頁(yè)
信息技術(shù)選考對(duì)分查找_第2頁(yè)
信息技術(shù)選考對(duì)分查找_第3頁(yè)
信息技術(shù)選考對(duì)分查找_第4頁(yè)
信息技術(shù)選考對(duì)分查找_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

16/16DACCCBDAB某對(duì)分査找算法的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”個(gè)數(shù)相同的情況有A.1種 B.2種 C.3種 D.4種7如圖a所示,已有若干學(xué)生從1開(kāi)始編號(hào),在文本框Text1中輸入新增的學(xué)生姓名,填補(bǔ)到空缺的學(xué)號(hào)(2、3、6、11)位置。填補(bǔ)規(guī)則:從最小號(hào)開(kāi)始依次填補(bǔ)。單擊“新增”按鈕后在列表框List1中完整顯示所有學(xué)生信息,如圖b所示。實(shí)現(xiàn)上述功能的VB代碼如下,但加框處有錯(cuò),請(qǐng)改正。DimnAsInteger′學(xué)生人數(shù)Dima(1To100)AsInteger′存儲(chǔ)學(xué)生的學(xué)號(hào)Dimb(1To100)AsString′存儲(chǔ)學(xué)生的姓名PrivateSubForm_Load()′從數(shù)據(jù)庫(kù)中讀取學(xué)生學(xué)號(hào)、學(xué)生姓名和總?cè)藬?shù),分別存儲(chǔ)在數(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ù)。編寫(xiě)一個(gè)查找最接近數(shù)的VB程序:程序運(yùn)行時(shí),在文本框Text1中輸入產(chǎn)生隨機(jī)數(shù)的個(gè)數(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個(gè)時(shí),輸出較大的一個(gè))。程序運(yùn)行效果如圖所示。實(shí)現(xiàn)上述功能的VB代碼如下,請(qǐng)?jiān)趧澗€處填入合適代碼。DimnAsInteger′存儲(chǔ)隨機(jī)數(shù)的個(gè)數(shù)Dimf(1To100)AsBoolean′f(i)為true時(shí)表示隨機(jī)整數(shù)i已經(jīng)產(chǎn)生過(guò)Dima(1To100)AsInteger′依次存放升序排序后的n個(gè)隨機(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較為接近的兩個(gè)數(shù)a(R)和a(L)9.?dāng)?shù)組a中存儲(chǔ)的是一組正整數(shù),特征是:①以三個(gè)數(shù)為一組的話,每組中任意一個(gè)數(shù)都比前面一組中的任意一個(gè)數(shù)要大;②每組中三個(gè)數(shù)依次遞減;③數(shù)組中數(shù)的總個(gè)數(shù)為3的倍數(shù)。依據(jù)對(duì)分查找思想,設(shè)計(jì)一個(gè)在數(shù)組a中查找數(shù)據(jù)key的程序。實(shí)現(xiàn)該功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。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)整到三個(gè)一組的最后一個(gè)數(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ù)組取其中某一個(gè)數(shù)為分割點(diǎn),將其之前的所有數(shù)都輪轉(zhuǎn)到數(shù)組的末尾所得。比如{7,11,13,17,2,3,5}就是一個(gè)輪轉(zhuǎn)后的有序數(shù)組,原有序數(shù)組中的子串{2,3,5}被輪轉(zhuǎn)到了數(shù)組的末尾處。對(duì)于一個(gè)輪轉(zhuǎn)后有序數(shù)組arr也可以進(jìn)行二分查找,算法思路如下(以升序?yàn)槔?:每次根據(jù)查找的左側(cè)位置L和右側(cè)位置R求出中間位置M后,M左邊[L,M]和右邊[M+1,R],這兩部分中至少一個(gè)是有序的(可根據(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)對(duì)于輪轉(zhuǎn)后有序數(shù)組{7,11,13,17,2,3,5}使用以上函數(shù)search()查找key值3,所需要的查找次數(shù)為_(kāi)_________。(2)以下VB函數(shù)Search()實(shí)現(xiàn)了對(duì)輪轉(zhuǎn)后有序數(shù)組arr進(jìn)行二分查找的過(guò)程,如果查詢(xún)成功,返回m值,查詢(xún)失敗則返回-1。請(qǐng)補(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中存儲(chǔ)的是左右交替上升的n個(gè)正整數(shù),如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依據(jù)對(duì)分查找思想,設(shè)計(jì)一個(gè)在數(shù)組a中查找數(shù)據(jù)key的程序。實(shí)現(xiàn)該功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。桶排序優(yōu)化。桶排序的思想是根據(jù)數(shù)組中各元素的值,依次放入相應(yīng)編號(hào)的桶中,最后按順序輸出桶中數(shù)據(jù),即可完成排序。例如:數(shù)據(jù)10、15、8、9、3,桶中的順序如下表:但是,當(dāng)數(shù)據(jù)范圍很大時(shí),需要的桶則非常多,會(huì)造成很大的資源浪費(fèi)。為了解決該問(wèn)題,小張對(duì)桶排序進(jìn)行了優(yōu)化,算法思想如下:①先依據(jù)數(shù)組中元素的個(gè)位進(jìn)行桶排序;②再依據(jù)數(shù)組中元素的十位進(jìn)行桶排序;直到排序完成。例如:有數(shù)組a中各元素分別為53,3,542,748,17,214,154,63,616,第一趟按個(gè)位排序過(guò)程如下:①個(gè)位填入相應(yīng)桶編號(hào)中,并統(tǒng)計(jì)每個(gè)桶中數(shù)據(jù)個(gè)數(shù)。②計(jì)算索引。計(jì)算方法是從前往后,依次計(jì)算當(dāng)前桶中元素個(gè)數(shù)與前一項(xiàng)之和。③按索引從桶中倒序取出數(shù)據(jù),每取一個(gè)索引減1。重新排列后為542,53,3,63,214,154,616,17,748。接下來(lái)對(duì)重新排序后的數(shù)據(jù)以十位、百位依次進(jìn)行桶排序即可完成排序(每一趟排序后數(shù)據(jù)重新排列)。(1)第二趟以十位排序后的結(jié)果中,前4個(gè)數(shù)為_(kāi)____。(數(shù)字間用逗號(hào)間隔)(2)現(xiàn)在有n個(gè)0~5000的數(shù)據(jù),其VB代碼如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。Constn=10Dima(1Ton)AsIntegerDimtmp(1Ton)AsInteger'臨時(shí)數(shù)組,用來(lái)保存桶排序后的結(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ù)個(gè)數(shù)k=(a(j)\s)Mod10count(k)=count(k)+1NextjForj=1To9'計(jì)算索引count(j)=__________NextjForj=nTo1Step-1'根據(jù)索引,從桶中取出數(shù)

溫馨提示

  • 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)論