版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
查找的2種算法:順序查找和二分查找統(tǒng)計(jì)的算法:
用一個(gè)數(shù)組存放統(tǒng)計(jì)結(jié)果(稱為統(tǒng)計(jì)數(shù)組),算法的關(guān)鍵是根據(jù)要統(tǒng)計(jì)的對(duì)象確定統(tǒng)計(jì)數(shù)組的下標(biāo)算法填空順序查找算法ForI=1to ifsearch(I)=xthenexitfornextI‘退出的兩種情況Ifthen
‘找到,處理else
‘沒(méi)找到,處理endif I<=ubound(search)Ubound(search)二分查找算法flg=False left=1 right=NMid=DoWhile
mid=(left+right)/2 IfX=S(mid)Then flag=True exitdo ElseIfX>S(mid)Then
Else
EndIfLoop (left+right)/2left<=rightleft=mid+1right=mid-1例6-12將一個(gè)數(shù)列中的重復(fù)數(shù)刪除掉。(動(dòng)態(tài)數(shù)組應(yīng)用)86638488634刪除重復(fù)數(shù)算法思想
第1輪:用a(1)依次和位于其后的所有數(shù)組元素比較,假設(shè)數(shù)組元素a(i)與a(1)相同,則將a(i)刪除。刪除a(i)的方法是將位于a(i)其后的數(shù)組元素依次前移,即用a(i+1)元素的值替換a(i)值,a(i+2)替換a(i+1)的值….直到a(n)替換a(n-1);然后繼續(xù)用a(1)和a(i),a(i+1),a(i+2)…..a(n-1)(數(shù)組已刪除一個(gè)元素了)。若有相同的數(shù)存在,使用相同的方法將其刪除,直到a(1)和位于其后的所有元素都比較完。第2輪:用a(2)和位于其后的所有元素比較,方法同第1輪。依次類推直到a(n-1)和a(n)比較完,就完成了刪除重復(fù)數(shù)。整個(gè)刪除的過(guò)程,數(shù)組a是動(dòng)態(tài)變化的。OptionExplicitOptionBase1Dima()AsIntegerPrivateSubCommand1_Click()DimnAsInteger,iAsIntegerText1=""Text2=""n=InputBox("輸入N")ReDima(n)Fori=1Tona(i)=Int(10*Rnd)+1Text1=Text1&Str(a(i))NextiEndSub定義動(dòng)態(tài)數(shù)組的大小,使用循環(huán)結(jié)構(gòu)給數(shù)列賦值,并在text1中輸出.因?yàn)閮蓚€(gè)按鈕對(duì)同一個(gè)數(shù)組操作,所以數(shù)組定義為模塊級(jí)例6-12代碼解析PrivateSubCommand2_Click()DimubAsInteger,i%,j%,k%,n%Text2=""ub=UBound(a)n=1DoWhilen<ubi=n+1DoWhilei<=ub
Ifa(n)=a(i)Then
Forj=iToub-1a(j)=a(j+1)
Nextjub=ub-1ReDimPreservea(ub)Elsei=i+1
EndIfLoopn=n+1Loop如果a(i)等于a(n),則刪除a(i).n為比較的輪數(shù),初值為1數(shù)組a少了一個(gè)元素,長(zhǎng)度減1,需要重定義且要保留原來(lái)的值i比n大1,代表n的后一個(gè)元素的下標(biāo)如果不相等,接著和后面的數(shù)比。直到i=ub第1輪比較結(jié)束開(kāi)始下一輪比較Forn=1ToubText2=Text2&Str(a(n))Nextn輸出結(jié)果例6-13有15名學(xué)生按照已有的編號(hào)順序圍成一圈,1~3報(bào)數(shù),凡報(bào)到3者出圈,并給他一個(gè)新的編號(hào)。最先出圈者新的編號(hào)為1,第二個(gè)出圈者新的編號(hào)為2,依次類推,直到所有的學(xué)生都重新編號(hào)。將學(xué)生的新老編號(hào)對(duì)應(yīng)關(guān)系打印出來(lái)。123456789101112131415369121548132101117145123456789101112131415111111111111111123456789101112131415算法說(shuō)明:
通過(guò)本例,介紹在編程時(shí),如何使用數(shù)組元素的值和數(shù)組元素的下標(biāo)來(lái)描述不同的對(duì)象。定義兩個(gè)數(shù)組old_no和new_no.old_no數(shù)組元素的下標(biāo)對(duì)應(yīng)學(xué)生的老編號(hào),元素的初值均為1,用來(lái)標(biāo)識(shí)它所對(duì)應(yīng)的學(xué)生是否出圈(1表示沒(méi)出圈,0表示出圈).new_no數(shù)組元素的下標(biāo)表示學(xué)生的新編號(hào),數(shù)組元素的值是學(xué)生的老編號(hào).重新編號(hào)的方法如下:
將數(shù)組old_no的數(shù)組元素依次逐個(gè)相加(報(bào)數(shù)處理),每當(dāng)和為3時(shí),則將該元素的值置為0(逢3出圈),并把它的下標(biāo)值賦給new_no數(shù)組的第一個(gè)元素.OptionBase1PrivateSubCommand1_Click()Dimold_no(15)AsInteger,new_no(15)AsIntegerDimi%,idx%,count%Fori=1To15old_no(i)=1
Nextiidx=0
Fori=1To15count=0
DoWhilecount<3idx=idx+1Ifidx>15Thenidx=1count=old_no(idx)+countLoopold_no(idx)=0new_no(i)=idx
NextiFori=1To15Text1=Text1&Right(""&CStr(i),3)Text2=Text2&Right(""&CStr(new_no(i)),3)NextiEndSub
給old_no數(shù)組賦值,初值為
1,表示沒(méi)有出圈Count表示和表達(dá)式中變量的值在改變Do循環(huán)條件表達(dá)式此時(shí)Idx出圈了,成為新編號(hào)用right函數(shù)控制輸出格式報(bào)數(shù)輸出結(jié)果15個(gè)新號(hào)例6-14:找出從1-9這9個(gè)數(shù)字中任取6個(gè)不同數(shù)字組成的素?cái)?shù)算法說(shuō)明:本例程序定義一個(gè)”標(biāo)識(shí)”數(shù)組a,用數(shù)組元素的下標(biāo)來(lái)表示0—9這10個(gè)數(shù)字.用數(shù)組元素的值來(lái)標(biāo)識(shí)對(duì)應(yīng)的數(shù)字是否被用過(guò),如果數(shù)組元素的值為1,則表示對(duì)應(yīng)的數(shù)字已用過(guò);若為0,則表示未使用過(guò),可以用來(lái)組數(shù).PrivateSubCommand1_Click()Dima(0To9)AsInteger,i&,k%,j%,s$,n&
Fori=123456To987654Eraseaa(0)=1s=CStr(i)
Forj=1To6k=Val(Mid(s,j,1))Ifa(k)=0Thena(k)=1ElseExitForEndIf
NextjIfj>6Then
Forn=2ToSqr(i)IfiModn=0ThenExitFor
NextnIfn>Sqr(i)ThenList1.AddItemiEndIfEndIfNextiEndSub判斷i是否是素?cái)?shù),若是則在list中添加i循環(huán)正常結(jié)束表示6位數(shù)都沒(méi)有重復(fù)的,則i滿足第一個(gè)條件初始化為0例6-5:隨機(jī)生成10個(gè)兩兩互質(zhì)的四位整數(shù),并按從大到小的順序存放到list中.分析程序:1)所謂兩兩互質(zhì)是指任意兩個(gè)數(shù)除了1以外沒(méi)有其他的公約數(shù),例13和17,而6和8就不互質(zhì).2)除第一個(gè)隨機(jī)數(shù)以外,每當(dāng)新生成一個(gè)4位的隨機(jī)整數(shù),都要驗(yàn)證這個(gè)數(shù)和前面的數(shù)(即列表項(xiàng)是否互質(zhì)).若不互質(zhì)則丟棄,否則插入到數(shù)組中.3)要求存放在list中,該控件有一個(gè)list屬性可以當(dāng)作數(shù)組看待.將求出的互質(zhì)數(shù)放在該屬性中.4)要求從大到小排序.拿它依次和各列表項(xiàng)比較,并將它插入到第一個(gè)比它小的列表項(xiàng)前面.生成10個(gè)互質(zhì)數(shù),不排序PrivateSubCommand1_Click()Dimp%,i%,idx%,j%List1.List(0)=Int(Rnd*(9999-1000))+1000Dop=Int(Rnd*(9999-1000))+1000Fori=0ToList1.ListCount-1Forj=2TopIfpModj=0AndList1.List(i)Modj=0ThenExitForEndIfNextjIfj<=pThenExitForNextiIfi>List1.ListCount-1ThenList1.AddItempEndIfLoopUntilList1.ListCount=10EndSub隨機(jī)生成第1個(gè)4位數(shù)P是第2個(gè)隨機(jī)數(shù),要不要放List1中,需要判斷若滿足條件,說(shuō)明P和List1中的項(xiàng)互質(zhì),則丟棄丟棄判斷P和所有存在項(xiàng)是否互質(zhì)判斷P和1個(gè)存在項(xiàng)是否互質(zhì)互質(zhì)則添加P循環(huán)結(jié)束條件:有10個(gè)數(shù)時(shí)則結(jié)束PrivateSubCommand1_Click()Dimp%,i%,idx%,j%List1.List(0)=Int(Rnd*(9000))+1000
Dop=Int(Rnd*(9000))+1000
Fori=0ToList1.ListCount-1Forj=2TopIfpModj=0AndList1.List(i)Modj=0ThenExitForEndIf
Nextj
Ifj<=pThenExitForNextiIf
i>List1.ListCount-1Thenidx=0
DoWhilep<List1.List(idx)idx=idx+1Ifidx>List1.ListCount-1ThenExitDoLoopList1.AddItemp,idx
EndIf
LoopUntilList1.ListCount=10EndSub在第idx位置插入p有關(guān)數(shù)組的算法,除了上述幾種排序和查找要記憶外,還有:1)求一維數(shù)組a(n)元素的和。
s=0fori=1tons=s+a(i)nexti2)求二維數(shù)組a(m,n)各元素的和s=0Fori=1tomforj=1tons=s+a(i,j)nextjNexti3)求二維數(shù)組a(m,n)周邊元素的和S=0Fori=1tons=s+a(1,i)+a(m,i)Nextifori=2tom-1s=s+a(i,1)+a(i,n)Nextj4)求二維數(shù)組a(n,n)主對(duì)角線元素的和S=0Fori=1tons=s+a(i,i)Nexti5)求二維數(shù)組a(n,n)次對(duì)角線元素的和S=0Fori=1tons=s+a(i,n+1-i)Next第6章結(jié)束!作業(yè):1.習(xí)題集(第11周一上課時(shí)交)2.第5章課后習(xí)題2-10(第12周一上課時(shí)交)3.第6章課后習(xí)題2-12(第13周一上課時(shí)交)上交文件包,一個(gè)題一個(gè)文件夾,發(fā)送至29569739@第五章循環(huán)作業(yè)p81T11)做循環(huán)的條件是a<=5;
循環(huán)體為
b=b+a*aa=a+1
第一趟循環(huán):
因?yàn)閍=1(<=5)
所以:b=0+1=1a=1+1=2(a是條件變量仍然<=5)所以做第2趟循環(huán):
所以:b=1+4=5a=2+1=3(a仍然<=5)所以做第3趟循環(huán):
所以:b=5+9=14a=3+1=4(a仍然<=5)所以做第4趟循環(huán):
所以:b=14+16=30a=4+1=5(a仍然<=5)所以做第5趟循環(huán):
所以:b=30+25=55a=5+1=6(a>5,此時(shí)結(jié)束循環(huán),執(zhí)行l(wèi)oop后面的語(yǔ)句)結(jié)果為6552)for語(yǔ)句為:fori=1to3;循環(huán)體為:ch=mid(ch,2*i-1,1)&left(ch,len(ch))printch第1趟循環(huán):i=1ch=mid(“DEF”,1,1)&left(“DEF”,3)=“D”&”DEF”=“DDEF”NextI后,i=2第二趟循環(huán):i=2ch=mid(“DDEF”,3,1)&left(“DDEF”,4)=“E”&”DDEF”=“EDDEF”NextI后,i=3第三趟循環(huán):i=3ch=mid
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026四川簡(jiǎn)州空港建設(shè)集團(tuán)有限公司招聘勞務(wù)派遣人員1人考試備考試題及答案解析
- 2026湖南常德市自來(lái)水有限責(zé)任公司遴選9人考試備考試題及答案解析
- 2026四川內(nèi)江市隆昌市黃家鎮(zhèn)便民服務(wù)中心見(jiàn)習(xí)崗位招聘1人考試參考題庫(kù)及答案解析
- 2026湖北武漢市光谷喻家山學(xué)校校聘教師招聘5人(一)考試備考試題及答案解析
- 2026年茅嶺鎮(zhèn)衛(wèi)生院招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 原平市2025年公開(kāi)招聘社區(qū)專職工作人員備考題庫(kù)及參考答案詳解1套
- 南昌印鈔有限公司2026年度招聘?jìng)淇碱}庫(kù)附答案詳解
- 2026年湖南海利高新技術(shù)產(chǎn)業(yè)集團(tuán)有限公司國(guó)家危險(xiǎn)化學(xué)品應(yīng)急救援湖南海利隊(duì)人員公開(kāi)招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2026年江門公共資源交易控股集團(tuán)有限公司人力資源總監(jiān)公開(kāi)招聘?jìng)淇碱}庫(kù)及參考答案詳解
- 2026年河南平煤神馬平綠置業(yè)有限責(zé)任公司公開(kāi)招聘?jìng)淇碱}庫(kù)及答案詳解一套
- QGDW11356-2022電網(wǎng)安全自動(dòng)裝置標(biāo)準(zhǔn)化設(shè)計(jì)規(guī)范
- 資源與運(yùn)營(yíng)管理-第一次形考任務(wù)-國(guó)開(kāi)-參考資料
- (高清版)DBJ33∕T 1318-2024 建筑結(jié)構(gòu)抗震性能化設(shè)計(jì)標(biāo)準(zhǔn)
- 施工虧損報(bào)告范文
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)附答案
- DB33-T 1406-2024 職務(wù)科技成果轉(zhuǎn)化管理規(guī)范
- 七年級(jí)上學(xué)期數(shù)學(xué)備課組期末復(fù)習(xí)計(jì)劃
- 病理檢驗(yàn)技術(shù)(第3版)課件 第10章 細(xì)胞學(xué)檢查技術(shù)
- 鄉(xiāng)鎮(zhèn)污泥處理應(yīng)急預(yù)案
- 海上導(dǎo)管架安裝監(jiān)理細(xì)則
- 中醫(yī)九種體質(zhì)的養(yǎng)生課件模板
評(píng)論
0/150
提交評(píng)論