![常用算法總結(jié)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/13/d1fcaf73-6380-48e0-827a-1153072846dd/d1fcaf73-6380-48e0-827a-1153072846dd1.gif)
![常用算法總結(jié)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/13/d1fcaf73-6380-48e0-827a-1153072846dd/d1fcaf73-6380-48e0-827a-1153072846dd2.gif)
![常用算法總結(jié)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/13/d1fcaf73-6380-48e0-827a-1153072846dd/d1fcaf73-6380-48e0-827a-1153072846dd3.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、sum=0累加求和時(shí),變量數(shù)組名(!)一、變量值的交換算法思想:若交換兩個(gè)變量的值,必須引入第三個(gè)新的變 疑進(jìn)行傳遞。以下代碼是錯(cuò)誤的:X=12 : Y=34 : X=Y : Y=X正確的代碼是:X=12 : Y=23 : T=X : X=Y : Y=T二、判斷一個(gè)數(shù)是否能被另一個(gè)數(shù)整除算法思想:可以用整除的泄義(余數(shù)為0)或X除以Y等 于X整除Y等表達(dá)式進(jìn)行判斷。條件表達(dá)式可以為:X mod Y=0 或 X Y=X/Y 或lnt(X/Y)=X/Y如果以上條件表達(dá)式為True,則表示X能被Y整除。三、累加、階乘、計(jì)數(shù)和求平均值算法思想:使用循環(huán)語句,并用一個(gè)變量存放累加的中間 及最終結(jié)果。注:
2、累加求和時(shí)變呈:初值為0,汁算階乘時(shí)變量初值為lo 統(tǒng)計(jì)計(jì)個(gè)數(shù)(計(jì)數(shù))時(shí)可用一個(gè)變量作為統(tǒng)計(jì)個(gè)數(shù)的累加 變疑,每次加1即可。求平均值算法思想是先求和,再除以個(gè)數(shù)。條件求和(或計(jì)數(shù)):在循環(huán)語句中加入If-End If判斷語 句。例題:訃算1到10之間所有整數(shù)的累加和以及10!。n=10prod=l累乘(連乘)時(shí),變雖:的初值一左為1For i=l To nsum二sum+iprod=prod*iNext iPrint sumrod例題:統(tǒng)計(jì)0100之間能被3整除的數(shù)的個(gè)數(shù)、累加和及苴平均值。s=0n=0For i=0 To 100If i mod 3 =0 Thens=s+in 二n+1End
3、 IfNext iPrint n,s,s/n四、對(duì)數(shù)組中的元素逐一進(jìn)行操作算法思想:在VB中,對(duì)于數(shù)組中元素的操作,往往使用到For循環(huán)。通用代碼為:Dim數(shù)組爼(下標(biāo)下界To下標(biāo)上界)For i=LBound(數(shù)組名)To UBound(數(shù)組名)例題:Nexti通過以上循環(huán),可以對(duì)數(shù)組中所有元素逐一操作。注:1) LBound函數(shù):返回?cái)?shù)組的下界UBound函數(shù):返回?cái)?shù)組的上界2) 如果數(shù)組上界和下界已經(jīng)確左,可以不使用函數(shù),直接指明即可。例如Option Base 1Dim a(100) As IntegerFor i=l To 1001. 對(duì)下標(biāo)為偶數(shù)的元素進(jìn)行處理的程序代碼Option
4、 Base 1For i=l to UBound(a)循環(huán)變量 i可代表數(shù)組元素的下標(biāo)If i mod 2 =0 Thena 0) End IfNexti2. 對(duì)數(shù)組元素中數(shù)據(jù)為偶數(shù)的元素進(jìn)行處理Option Base 1a(i)Nexti3)對(duì)于二維數(shù)組,要使用For循環(huán)的嵌套實(shí)現(xiàn)對(duì)數(shù)組中 元素的操作,其中外層循環(huán)變量控制第一維下標(biāo)的變化, 內(nèi)層循環(huán)變量控制第二維下標(biāo)的變化,例如:Option Base 1Dim a(2,3) As IntegerFor i=l to 2Forj=lto 3a (bj)Next jNext iFor i=l to UBound(a)循環(huán)變量 i代表數(shù)組元素的
5、下標(biāo)If a(i) mod 2 =0 Thena 0) End IfNexti五、交換數(shù)組元素算法思想:若某一維數(shù)組有n個(gè)元素,將第1個(gè)元素和第 n個(gè)元素交換,將第2個(gè)元素和第n-1個(gè)元素交換, 需要交換n 2次(如果交換n次,則回到初始狀態(tài)); 對(duì)于二維數(shù)組,若進(jìn)行行交換或列交換,需要使用循環(huán)語 句,每次循環(huán)需要使用變量值交換算法。例題:交換一維數(shù)組(5個(gè)元素)的元素值b = Ar ray (1, 3, 5, 7, 9)For i = 0 To 5 2tmp = b(i)個(gè)元素進(jìn)行比較,如果某數(shù)組元素的值大于Max,則將該b(i) = b(5 - i -1)b(5 i -1) = tmpNe
6、xt iEnd Sub例題:一維數(shù)組元素交換的通用代碼:n = UBound(數(shù)組需)For i = LBound(數(shù)組名)Ton 2t = b(i)b(i) = b(n)b(n) = tn = n 2Next i例題:交換二維數(shù)組Mat第二列和第四列的數(shù)據(jù)For i=LBound(IVIat)To UBound(Mat,l)t = Mat(i, 2)Mat(i, 2) = Mat(i, 4)Mat 4) = tNexti例題:交換二維數(shù)組Mat第一行和第三行的數(shù)擄For j=LBound(Mat,2) To UBound(Mat,2)t = Mat(lJ)Mat(l,j) = Mat(3,j
7、)Mat(3,j) = tNext i六、求數(shù)組元素中的最大值、最小值算法思想:假設(shè)數(shù)組中第一個(gè)元素為最大值,并賦給變量Max.然后使用循環(huán)結(jié)構(gòu)依次與第2個(gè)數(shù)組元素至最后一 元素的值賦給Max(同時(shí)可記錄下該數(shù)組元素在數(shù)組中的 位置)。例題:顯示數(shù)組a中的最大值及其下標(biāo)。Option Base 1Dim Max As Integer, Index As IntegerMax=a(l)alndex=lFor i=2 to UBound(a)If a(i)MaxThe nMax=a(i)alndex=lEnd IfNext iPrint Max, i求最小值的方法與此類似,差別在于取第一個(gè)元 素為
8、最小值Min,與2個(gè)數(shù)組元素至最后一個(gè)元素進(jìn)行比 較時(shí)判斷關(guān)系有所調(diào)整,即Min=a(l)If a(i)Min ThenMin=a(i)End If七、常用字符處理函數(shù)Mid函數(shù):從字符串指左位置取指左個(gè)字符,格式為Mid (字符,P,n),從第p個(gè)字符開始,向后截取n個(gè)字符(若 n省略則取到最后)。Left和Right函數(shù):從字符串左邊或右邊取指泄個(gè)字符,格式為L(zhǎng)eft (字符,n)和Right (字符,n)。Len函數(shù):測(cè)試字符串長(zhǎng)度。UCase和LCase函數(shù):UCase將小寫字母轉(zhuǎn)換為大寫字母:LCase將大寫字母轉(zhuǎn)換為小寫字母。Instr(首字符位置,字符串1,字符串2,n):在字符
9、串 1中查找字符串2,如果找到,返回字符串2的第一個(gè)字 符在字符串1中出現(xiàn)的位宜。首字符位置是可選的,如果 不指立,從字符串起始位置開始査找:如果指明,從指定 的位置開始查找。Asc函數(shù):返回字符串中第一個(gè)字符的ASCII碼。Chr函數(shù):將一個(gè)數(shù)值轉(zhuǎn)換為其所對(duì)應(yīng)的字符。字符的比較規(guī)則是按ASCII碼順序比較,規(guī)則為空格”A” ” Z” = a And si = a1 And sl= A11 And sl= Z11 ThenEnd IfEnd IfNext iText2.Text = s2End Sub4. 判斷是否回文函數(shù)所謂回文是指順讀與倒讀都一樣的字符串,如“rececer”Functio
10、n foundhuiwen(p As String)foundhuiwen = Truek = Len(p)For i = 1 To k / 2If Mid(pz 1) Mid(pz k + 1 - i, 1) Then foundhuiwen = FalseExit ForEnd IfNextEnd Function如果foundhuiwen函數(shù)返回值為True,表明字符 串p為回文,否則表示不是回文。5. 統(tǒng)汁某字符出現(xiàn)次數(shù)算法思想:對(duì)字符串中字符逐一判斷,如果是某字符,則 統(tǒng)計(jì)變量加lo例題:統(tǒng)訃文本框Textl中字符i和j出現(xiàn)的次數(shù)(不區(qū) 分大小寫)。Private Sub Comma
11、ndl_Click()n = Len(s)For i = 1 To nsi = Mid(s, i, 1)If UCase(sl) = I Then ni = ni + 1If UCase(sl) = J Then nj = nj + 1Next iPrint ni, njEnd Sub八、素?cái)?shù)素?cái)?shù)定義:只能被1和本片整除的正整數(shù)稱為素?cái)?shù)(或稱質(zhì) 數(shù))。例如11就是素?cái)?shù),它只能被1和口整除。算法思想:判別某數(shù)n是否是素?cái)?shù)的方法有很多,最簡(jiǎn)單的 是從素?cái)?shù)的定義來求解。對(duì)于n,從i=2, 3,n-1判別n能夠被i整除,只要有-個(gè)能整除,n就不是素?cái)?shù),否則n 是素?cái)?shù)。此種算法比較簡(jiǎn)單,但速度慢,因此,
12、可以將n被 2到(或n/2)間的所有整數(shù)除,如果都除不盡,則n就是 素?cái)?shù),否則n是非素?cái)?shù)。成后,循環(huán)變量的值將人于終值。注:執(zhí)行For循環(huán)時(shí),循環(huán)變雖等于終值仍進(jìn)入循環(huán),遇到 Next語句,循環(huán)變量會(huì)自動(dòng)加上步長(zhǎng),因此如果循環(huán)正常完例如For i=l To 4If Then Exit ForNext iPrint i如果循環(huán)正常結(jié)束,則輸出結(jié)果為5 (人于4)。如果循環(huán)過程中滿足If條件,執(zhí)行Exit For語句退出循環(huán),則j的值定小于5o例題:判斷n是否是素?cái)?shù)。Private Sub Command2_Click()n = Val(Textl.Text)For j = 2 To n 1If
13、n Mod j = 0 Then Exit ForNext jIf j n-l Then Print 是素?cái)?shù),Else Print ”不是素?cái)?shù),End Sub例題:輸出2n范圉的全部素?cái)?shù)。Private Sub Commandl_Click()n = Val(Textl.Text)For i = 2 T onForj = 2To Sqr(i)If i Mod j = 0 Then Exit ForNext jIf j Sqr(i) Then Print iNext iEnd Sub使用Do While循環(huán)判斷是否是素?cái)?shù)的代碼為:Dim flag As Booleanflag = Trueb =
14、 2Do While b y(2)x除以y得余數(shù)r:(3)若r=0,則x為求得的最大公約數(shù),算法結(jié)束:否則執(zhí)行步驟(4)(4)xy, yr,再重復(fù)執(zhí)行(2)求得了最人公約數(shù)后,最小公倍數(shù)就可很方便地求出,即將 原來的兩數(shù)相乘除以最人公約數(shù)。Private Sub Form_Click()x = Val(lnputBoxf請(qǐng)輸入第個(gè)數(shù):)Private Function isprime(a As Integer) As Booleany = Val(lnputBox(n請(qǐng)輸入第二個(gè)數(shù):)If xy The nDim j As IntegerDim i As Integert = xx = yy
15、= tEnd Ifx 1 = xyi = yPrint x, yDo While y0r = x Mod yx = yy = rLoopPrint最大公約數(shù)為:;xPrint*獗小公倍數(shù)n;xl*yl/xEnd Sub十、完數(shù)定義:個(gè)數(shù)如果正好等于它的因了之和,這個(gè)數(shù)就稱為完數(shù)。例如,6的因子為1、2、3,而6=1+2+3,因此6是完 數(shù)。例題:編程找出1000以內(nèi)的所有完數(shù)。Private Sub Commandl_Click()OutputWanNumber 1000End Sub,求完數(shù)的過程Sub OutputWanNumber(ByVal n As Integer)Dim s As
16、IntegerFor i = 1T ons = 0Forj = lToi 2If i Mod j = 0 Then s = s + jNext jlfs = iThen Print i & 是完數(shù)”Next iEnd Sub十-、水仙花數(shù)定義:水仙花數(shù)是指?jìng)€(gè)三位數(shù),其中各位數(shù)字的立方和等于該數(shù)本身(如153 = 2+53+33)分析:此題的關(guān)鍵是要知道如何分離出個(gè)三位數(shù)中的各位 數(shù)字。例題:找出100999之間的所有水仙花數(shù)。Private Sub Commandl_Click()For i = 100 To 999a = lnt(i/100)b = lnt(i-100#a)/10)c = i
17、 - lnt(i / 10) * 10lfi = aA3 + bA3 + cA3 The nPrint iEnd IfNext iEnd SubPrivate Sub Commandl_Click()For n = 100 To 999s = 0a 二 nDo WhileaoOb = a Mod 10s=s+b#b#ba = a 10LoopIf s = n Then Print nNext nEnd Sub十二、數(shù)列以下數(shù)列:1,1,2, 3, 5, 8, 13, 21,的規(guī)律是從第3個(gè)數(shù)開始,每個(gè)數(shù)是它前面兩個(gè)數(shù)之和。Private Sub Commandl_Click()Dim a(50
18、) As LongDim f As Longaa(2) = 1For i = 3 To Val(Textl.Text)f = a(i-2) + a(i-l)a(i) = fNextText 2.Text = fEnd Sub以下數(shù)列:1, 1, 3, 5, 9, 15, 25, 41的規(guī)律是從第3個(gè)數(shù)開始,每個(gè)數(shù)是它前面兩個(gè)數(shù)的和加lo Private Sub Commandl_Click()Dim f As Longaa(2) = 1For i = 3 To Val(Textl.Text)f = a(i-2) + a(i-l) + la(i) = fNextText2.Text = fEnd Sub十三、排序本算法主要應(yīng)用于數(shù)組。排序算法有種,其中“冒泡”排 序法是較為常見的種。算法思想:從數(shù)組的第個(gè)元素開始,每項(xiàng)(i)都與 下個(gè)元素(i+1)進(jìn)行比較,如果下個(gè)元素的值較小,就 將這兩項(xiàng)的位置交換,從而使值較小的數(shù)據(jù)項(xiàng)升到上而(最 人數(shù)沉底”),重復(fù)這種操作直到最后個(gè)元素,然后再回 到開始進(jìn)行重復(fù)處埋。當(dāng)整個(gè)數(shù)組不再出現(xiàn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年市場(chǎng)準(zhǔn)入合規(guī)策劃合作框架協(xié)議
- 2025年實(shí)習(xí)生供求策劃協(xié)議書模板
- 2025年丹陽市美容院股東權(quán)益策劃與分配合同書
- 2025年住房項(xiàng)目施工協(xié)議書
- 2025年中外合資企業(yè)合同書
- 2025年施工合同預(yù)付款保證樣本
- 2025年會(huì)員注冊(cè)須知協(xié)議
- 2025年住宅小區(qū)電氣布線施工合同
- 2025年農(nóng)業(yè)委托種植策劃?rùn)?quán)益合同
- 2025年醫(yī)學(xué)專家工作合同樣本
- 2025年菏澤醫(yī)學(xué)專科學(xué)校高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 成都四川成都簡(jiǎn)陽市簡(jiǎn)城街道便民服務(wù)和智慧蓉城運(yùn)行中心招聘綜治巡防隊(duì)員10人筆試歷年參考題庫附帶答案詳解
- 2025-2030全球廢棄食用油 (UCO) 轉(zhuǎn)化為可持續(xù)航空燃料 (SAF) 的催化劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 山東省臨沂市蘭山區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試生物試卷(含答案)
- 2025年環(huán)衛(wèi)工作計(jì)劃
- 新版高中物理必做實(shí)驗(yàn)?zāi)夸浖捌鞑?(電子版)
- 中國慢性冠脈綜合征患者診斷及管理指南2024版解讀
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗(yàn)收規(guī)范
- JTGT H21-2011 公路橋梁技術(shù)狀況評(píng)定標(biāo)準(zhǔn)
- 地鐵建設(shè)工程安全文明施工標(biāo)準(zhǔn)化指南(通用篇)
- 新視野大學(xué)英語第三版Book 2 Unit 1 Text A
評(píng)論
0/150
提交評(píng)論