《算法與程序設(shè)計VB(選修)》復(fù)習(xí)知識點_第1頁
《算法與程序設(shè)計VB(選修)》復(fù)習(xí)知識點_第2頁
《算法與程序設(shè)計VB(選修)》復(fù)習(xí)知識點_第3頁
《算法與程序設(shè)計VB(選修)》復(fù)習(xí)知識點_第4頁
《算法與程序設(shè)計VB(選修)》復(fù)習(xí)知識點_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

■Tim^niaBBBarniHiFrBBrraBr■■rnarraaJh~Kirtl'■t-超JJLfW7■Tim^niaBBBarniHiFrBBrraBr■■rnarraaJh~Kirtl'■t-超JJLfW7賦值號■*濂程線3)偽代碼描述法:是f迪變dm趟翌一7高中信息技術(shù)《算法與程序設(shè)計VB(選修)》知識要點相關(guān)知識點(一)算法定義相關(guān)題解:算法:就是解決問題的方法和步驟。算法是程序設(shè)計的“靈魂”算法+數(shù)據(jù)結(jié)構(gòu)二程序。2.算法的描述方法:算法的描述:可分多種表達(dá)方法,一般用自然語言、流程圖和偽代碼進(jìn)行描述。1) 自然語言描述法:指用人們?nèi)粘I钪惺褂玫恼Z言(本國語言),用自然語言描述符合我們的習(xí)慣,且容易理解。2) 流程圖描述:也稱程序框圖,它是算法的一種圖形化表示方法。且描述算法形象、直觀,更易理解。 >輸入豔出框 >判斷框…*處理框員常用方法。(二)程序設(shè)計基礎(chǔ)

(1)常用高級編程語言:BASIC、VB、Pascal、C、C++、Java1、 面向?qū)ο蟮某绦蛟O(shè)計語言:其中的對象主要是系統(tǒng)設(shè)計好的對象,包括窗體等、控件等2、 控件:是指工具箱中的工具在窗體中畫出的、能實現(xiàn)一定功能的部件,如文本框,命令按鈕常用控件:控件對象的類型前綴名字舉例窗體Formfrmfrmfind命令按鈕Commandbuttoncmdcmdok標(biāo)簽Labellbllblinput文本框TextBoxtmrtmrClock若命令按鈕(Command)的Enabled屬性設(shè)置為True時按鈕有效,設(shè)置為False時按鈕無效3、對象的屬性、方法和事件1)屬性屬性Name設(shè)置對象的名稱Caption決定控件中顯示的內(nèi)容(文字)Text決定窗體中文本框中顯示的內(nèi)容(初始為空白)Height決定控件高度Width決定控件寬度TOP決定控件的靠頂部位置Left決定控件的靠左邊位置Font設(shè)置控件中字體格式BackColor設(shè)置控件背景色ForeColor設(shè)置控件的前景色BorderStyle設(shè)置控件的邊框風(fēng)格Alignment即標(biāo)簽文字對齊屬性:(0)LeftJustify時文本左對齊;(l)RightJustify時文本右對齊;設(shè)置為(2)Center時文本居中。AutoSize設(shè)置為False時輸入控件Caption中文字超過控件寬度時超出部分被裁剪掉,設(shè)置為True時,控件可水平擴充,以適應(yīng)控件Caption屬性。Visible決定控件是否可見Enabled決定控件運行時是否有效對象?屬性=屬性值對象中屬性可以在設(shè)計界面時通過屬性窗中設(shè)置,也可以在運行時通過程序代碼設(shè)置,方法如下例:給文本框“Txtl23”的“Text”屬性賦值為字符串“20”,代碼如下Txt123.text=”20”變量=對象.屬性如果要獲取對象的狀態(tài)或特性,這時就要讀取對象的屬性值,方法如下例:讀取文本框“txt123”的“Text”屬性的代碼如下a=txtl23.text2)方法[對象].方法[參數(shù)名表]例:form.print”歡迎使用”該語句使用print方法在form1窗體中顯示字符串“歡迎使用”事件及事件驅(qū)動事件是對象對外部操作的響應(yīng),如在程序執(zhí)行時,單擊命令按鈕會產(chǎn)生一個Click事件。如需要命令按鈕響應(yīng)Click事件,就把完成Click事件功能的代碼寫到Click事件的事件過程中,與事件一一對應(yīng)。事件過程的形式如下:PrivateSub對象_事件名()……………(事件過程代碼)EndSub一個簡單的VB程序求圓的周長和面積PrivateSubCommand1_Click()DimrAsSingle'定義r為單精度型DimcAsSingle'定義c為單精度型DimsAsSingle'定義s為單精度型r=Val(Textl.Text)'輸入半徑rc=2*3.14159*r'計算周長s=3.14159*r*r'計算面積Text2.Text=c '輸出周長Text3.Text=s '輸出面積EndSubPrivateSubCommand2_Click()End '退出EndSub相關(guān)題解:一、 常量:批在程序進(jìn)行過程中不變的量在VB中一般分?jǐn)?shù)值常量與字符常量兩種數(shù)值常量:就是數(shù)學(xué)中說的常數(shù),分整型常量和實型常量兩種整型常量:即整數(shù),指不帶小數(shù)點的數(shù)值如1、0、、-10、+35等都是合法的整數(shù)實型常量:即實數(shù),指帶小數(shù)點的數(shù)值。實型常量又分為定點數(shù)和浮點數(shù)兩種。例:定點數(shù):3.14159和-6.8,1.99浮點數(shù):2E6、1E5、88E例:1.2345X103可表示為1.2345E3,字母E表示底數(shù)10浮點數(shù)就是數(shù)學(xué)上的科學(xué)計數(shù)法。字符串常量:被一對雙引號括起來的若干個合法的字符稱為字符串常量。例如:”China”、”VisualBasic”、”18”、”3.1415”等,雙引號中字符,不包括雙引號本身符號常量:如果多次用到同一個常量,則可用一個有意義的名字表示這個常量。二、 變量:在程序執(zhí)行過程中,其值可以改變的量稱為變量變量命名注意要點:1、必須以字母開頭,不能以數(shù)字或其他字符開頭。2、 只能由字母、漢字、數(shù)字學(xué)或下劃線組成,不能含有小數(shù)點、空格等字符。3、 最長不超過255個字符4、 不能以VB保留字作變量名,如語句定義符、函數(shù)名等。5、 VB不區(qū)分變量名中字母大小寫。如HELLO和Hello是同一個變量。數(shù)據(jù)及運算(1)常用數(shù)據(jù)類型:(整型[Integer、(長整型)Long、(單精度型)Single、(雙精度型)Double、(字符串型)String、(布爾型)Boolean、(日期型)Date其中(整型)Integer、(長整型)Long、(單精度型)Single、(雙精度型)Double屬于數(shù)值型表示范圍:(整型)Integer(-32768——32767,存儲為16位,2個字節(jié))(長整型)Long(-21億——21億,可以表示人口數(shù)量)(布爾型)Boolean(True真、是或False假、非)(字符串型)String(定長字符串:0——65535個字符,不定長字符串:0——20億個字符)字符串型數(shù)據(jù)是指用“”括起來的一串字符。如“歡迎進(jìn)入VB世界!”、“VisualBasic”、“1234”都是字符串類型。(日期型)Date(100/1/1——9999/12/31)日期型數(shù)據(jù)專門用來處理日期和時間。VB采用一對“#”把日期和時間的值括起來,如#2003/08/20#表示2003年8月20日。(2)常量和變量的命名、聲明及賦值符號常量的聲明:Const常量名[As常量類型]=常量值如:ConstpiAsSingle=3.14159常量名為pi變量的聲明:Dim<變量名>As<變量類型>如:DimaAsInteger定義一個整型變量,變量名為a變量的賦值VB中使用Let語句給變量賦值,其形式如下:[Let]變量=表達(dá)式其中,方括號[]表示這部分內(nèi)容是可選的,通.常.可.以.?。裕摚P(guān).鍵.字.。.例題PrivateSubForm_Click()DimaAsInteger,bAsInteger,cAsIntegerDimstrAsStringLeta=54Letb=114c=a+bstr="HelloWorld"Print"a=";a,"b=";b,"c=";cPrintstrEndSub數(shù)據(jù)的輸出程序中運算得到的結(jié)果,除可以使用文本框和標(biāo)簽顯示外,對于大批量的數(shù)據(jù)更適合用Pint方法輸出,格式如下[對象].Pint[表達(dá)式列表]例題:PrivateSubForm_Click()DimxAsSingle,yAsSingleForm1.Print-61;-34Form1.Print9*2;12Form1.Print"Thisis";"abook"x=3:y=4Print"x=";x,"y=";yEndSub注意:Print方法運算符人指數(shù)例:2八2=4/(浮點)除例:5/2=2.5\整除例:5\2=2Mod求余數(shù)例:5Mod2=1關(guān)系運算=賦值<小于號<> 不等于>大于號>= 大于等于號<號=小于1、算術(shù)運算:加--減+注意:關(guān)系表達(dá)式的運算結(jié)果為布爾值True或False*乘等于號例:3>2結(jié)果為True(真或是)邏輯運算Not(取反)And(與)Or(或)運算結(jié)果為布爾型(Boolean)True或False邏輯運算符的優(yōu)先級為:No>And>Or日期運算符與日期表達(dá)式日期表達(dá)式是用日期運算符“+”或“-”將算式表達(dá)式、日期型常量、日期型變量、日期函數(shù)等連接起來的式子,如表達(dá)式“#2003/09/01#+30”的運算結(jié)果是“2003-10-1”;表達(dá)式“#2003/10/20#-#2003/10/10#”的運算結(jié)果為整數(shù)10字符運算字符串連接符為“+”和“&”“123”+“45”=“12345”“123”&“45”=“12345”123+“45”=168“123”+45=168運算符的執(zhí)行順序在VB中,當(dāng)一個表達(dá)式中同時出現(xiàn)多種運算符時,運算次序由運算符的優(yōu)先級決定,優(yōu)先級高的運算符先運算,優(yōu)先級相同的從左向右進(jìn)行運算。不同性質(zhì)的運算符優(yōu)先級如下。算術(shù)運算符>字符串運算符>關(guān)系運算符>邏輯運算符常用函數(shù)數(shù)學(xué)函數(shù)Abs(x)求x的絕對值,例:abs(-3.6)=3.6Sqr(x)求x的平方根,例:sqr(100)=10Int(x)求冬乂的最大整數(shù)例:int(3.6)=3 int(--3.6)=--4Rnd(x)產(chǎn)生[0,1)之間的隨機數(shù)(不包括1)Sin(x)Cos(x)Tan(x)Atn(x)Exp(x)Log(x)使用三角函數(shù)時,參數(shù)應(yīng)是弧度,如數(shù)學(xué)中sin30o應(yīng)寫為:sin(30*3?14159/180)字符串函數(shù)Len(字符串)求字符串的長度,例:Len(“hello”)=5Left(字符串,截取長度)截取字符串左邊部分,例:Left(“hello”,2)=“he”Mid(字符串,起始位置,截取長度),例:Mid(“hello”,2,2)=“el”其他:Right(字符串,長度)截取字符串右邊部分。例:Right(“hello”,2)=“l(fā)o”999”String(數(shù)值,字符)生成指定長度與指定字符的字符串,例:String(3,”9”)=999”常用轉(zhuǎn)換函數(shù)Vai(字符串)將字符串轉(zhuǎn)換為數(shù)值Str(數(shù)值)將數(shù)值轉(zhuǎn)換為字符串Chr(字符代碼)Asc(字符)Tab定位函數(shù)的使用例題PrivateSubForm_Ciick()DimaAsIntegerDimbAsIntegera=4:b=9PrintTab(1);"數(shù)";Tab(9);"平方";Tab(18);"立方";Tab(27);"平方根"PrintTab(1);a;Tab(9);a*a;Tab(18);a*a*a;Tab(27);Sqr(a)PrintTab(1);b;Tab(9);b*b;Tab(18);b*b*b;Tab(27);Sqr(b)EndSub用戶交互函數(shù)VB提供InputBox()和MsgBox()函數(shù)用于人機交互InputBox()其語法格式為:InputBox(提示[,標(biāo)題][,默認(rèn)值][正坐標(biāo)][,Y坐標(biāo)])MsgBox()其語法格式為:MsgBox(提示信息[,按鈕][,標(biāo)題])(三)程序設(shè)計的順序結(jié)構(gòu)程序設(shè)計的順序結(jié)構(gòu):代碼按照由上到下的順序一行一行地執(zhí)行。程序執(zhí)行過程中沒有分支、沒有重復(fù),這種結(jié)構(gòu)稱為順序結(jié)構(gòu)。例題:交換兩個變量中的數(shù)據(jù)。PrivateSubcmdSwap_Click()DimxAsSingle,yAsSingleDimmAsSinglex=Val(txtsx.Text)y=Val(txtsy.Text)m=x:x=y:y=m '交換數(shù)據(jù)txtdx.Text=Str(x)txtdy.Text=Str(y)EndSubPrivateSubcmdEnd_Click()EndEndSub程序設(shè)計的分支結(jié)構(gòu)行If語句行If是指在一行中寫完的If語句。其一般格式為:格式一:If條件Then語句執(zhí)行這種形式的If語句時,首先對條件進(jìn)行判斷。若條件成立,則執(zhí)行Then后面的語句;若條件不成立,則執(zhí)行If語句后繼程序行的語句格式二:If條件Then語句1Else語句2例題:輸入三個不相同的數(shù),求出其中最小數(shù)。PrivateSubForm_Click()DimaAsSingle,bAsSingle,cAsSingleDimMinAsSinglea=InputBox("輸入a","輸入框")b=InputBox("輸入b","輸入框")c=InputBox("輸入c","輸入框")Ifa<bThenMin=aElseMin=bIfc<MinThenMin=cPrint"最小數(shù)=";MinEndSub執(zhí)行這種形式的語句時,先進(jìn)行判斷。若條件成立,則執(zhí)行語句1;否則執(zhí)行語句2。塊If語句上述If-then語句只能根據(jù)條件的真假是否執(zhí)行一條語句,當(dāng)Then部分和Else部分包含的內(nèi)容較多時,則可選用“塊If語句”結(jié)構(gòu)。格式三:f條件Then語句塊EndIf例題:當(dāng)從輸入一個數(shù)時,當(dāng)該數(shù)大于或等于60時顯示"及格",該數(shù)小于60時顯示"不及格"。PrivateSubCommand1_Click()DimaAsSinglea=Val(Text1.Text)Ifa>=60ThenLabel1.Caption="及格"EndIfIfa<60ThenLabel1.Caption="不及格"EndIfEndSub格式四:If條件Then語句塊1Else語句塊2EndIf例題:編寫程序,求函數(shù)Y的值(當(dāng)xW0時,y=3x+l;當(dāng)x>0時,y=4x+l。PrivateSubForm_Click()DimxAsSingleDimyAsSinglex=Val(InputBox("請輸入變量x"))Ifx<=0Theny=3*x+1Elsey=4*x+1EndIfPrint"y=";yEndSub程序設(shè)計的循環(huán)結(jié)構(gòu)一、For-Next循環(huán)For循環(huán)變量一般形式是:For循環(huán)變量=初值To終值Step循環(huán)變量增量循環(huán)體Nxt循環(huán)變量例題1:求s=1+2+3+4?????+100PrivateSubForm_Click()DimiAsIntegerDimsumAsIntegersum=0Fori=1To100sum=sum+i'循環(huán)體NextiPrint"sum=";sumEndSub例題2:Step循環(huán)變量增量PrivateSubForm_Click()Forj=3To15Step2PrintjNextjEndSub循環(huán)變量的初值、終值、循環(huán)變量增量都是數(shù)值型。其中要重復(fù)執(zhí)行的操作稱為循環(huán)體,增量可正可負(fù),如果沒有設(shè)置Step,則增量的缺省值為11、 循環(huán)變量取初值;2、 循環(huán)變量與終值比較,沒有超過終值轉(zhuǎn)3,否則循結(jié)束,接著執(zhí)行循環(huán)語句的后繼語句;3、 執(zhí)行一次循環(huán)體4、 循環(huán)變量增加一個增量5、 重復(fù)步驟2~4。以上可以看出,F(xiàn)or-Next循環(huán)變量是一種當(dāng)型循環(huán)。說明For語句與Next語句必須成對出現(xiàn),而且它們當(dāng)中的“循環(huán)變量”必須是同一個變量,如上例中均為I。當(dāng)循環(huán)變量為正時,循環(huán)變量超過終值,是指循環(huán)變量的值大于終值時;若為負(fù),則是指循環(huán)變量的值小于終值。二、Do—Loop循環(huán)For-Next循環(huán)的次數(shù)是確定的,但是有的問題只知道循環(huán)結(jié)束的條件,重復(fù)執(zhí)行的次數(shù)事先并不知道,這是需要Do-Loop循環(huán)格式一:DoWhile條件循環(huán)體Loop例題:求最大公約數(shù)PrivateSubCommand1_Click()DimaAsIntegerDimbAsIntegerDimrAsIntegera=Val(Text1.Text)b=Val(Text2.Text)r=aModbDoWhiler<>0b=rr=aModbLoopText3.Text=Str(b)EndSubPrivateSubCommand2_Click()EndEndSub當(dāng)VB執(zhí)行DoWhile-Loop循環(huán)時,先判斷指定的條件是否為真,若條件為真,執(zhí)行循環(huán)體,條件為假時退出循環(huán)。格式二:Do循環(huán)體LoopUntil條件這種循環(huán)的執(zhí)行過程如圖所示。進(jìn)入循環(huán)體后,先執(zhí)行一次循環(huán)體A,然后再檢査條件P是否成立。如果不成立,就重復(fù)執(zhí)行循環(huán)體A,直到條件P成立退出循環(huán)體。例題:如果我國人口每年以平均1.5%的速度增長,問多少年后我國人口達(dá)到或超過15億?設(shè)現(xiàn)在人口為12.3億。PrivateSubForm_Click()DimpAsSingleDimrAsSingleDimnAsIntegerp=1230000000#r=0.015n=0Dop=p*(1+r)n=n+1LoopUntilp>=1500000000#Printn;"年后","人口=";p

EndSub(四)算法與問題解決1、解析法2、窮舉法3、遞歸法4、排序與查找數(shù)據(jù)一、窮舉算法及程序?qū)崿F(xiàn)枚舉算法基本思想是根據(jù)問題本身的性質(zhì),一一列舉出該問題所有可能的情況,并根據(jù)題目的條件逐個作出判斷,從中挑出符合要求的解。枚舉算法屬于搜索策略,適用于解變量確定的連續(xù)值域的問題。設(shè)計枚舉算法時要在盡可能小的范圍內(nèi)羅列出所有可能的情況,不能遺漏,也不能重復(fù)。例:假如我有一個QQ的密碼是一位數(shù)字,如果讓同學(xué)們來破解的話,會把0到9十個數(shù)字都試一遍,找到密碼,這種方法使用的算法就是枚舉算法。枚舉算法解題的主要方法,必須把所有的可能情況都一一列出來,這種可能情況,一般通過循環(huán)列舉出來。例如一份單據(jù)被抹除的數(shù)字的推算問題??赡艿那闆r有25006至25996一共100種,通過循環(huán)把這一百種情況全部列出來,在循環(huán)列出來的過程對,對每一種情況進(jìn)行比較,是否符合要求°n=25006+j*100,j的范圍為0至99」此處列出來的表達(dá)式只有一個未知數(shù)i,所以只需用一重循環(huán)就夠了。j-J+1n—25006+j*10是37的倍數(shù)或j-J+1n—25006+j*10是37的倍數(shù)或n是6?的教?/輸岀:計數(shù)鞭C的僖/j從0至夕鄉(xiāng)每決憎加7,把所韋楕況列出

DO循環(huán)c=0 ?如果需要統(tǒng)計符合要求的單據(jù)的張數(shù)的話,用c做計數(shù)器j=0dowhilej〈100 ?j的范圍是0至99,此處也可寫成j〈=99n=25006+i*100'通過j把單據(jù)的所有的可能情況列出來ifnmod37=0ornmod67=0then ?判斷是否符合要求printnc=c+l?printnc=c+l?符合要求的單據(jù)加一張endifi=i+l?j每次增加1直到99loopFOR循環(huán)c=0?如果需要統(tǒng)計符合要求的單據(jù)的張數(shù)的話,用c做計數(shù)器Forj=0to99'一重循環(huán),把j所有可能情況列出來n=25006+i*100'通過j把單據(jù)的所有的可能情況列出來ifnmod37=0ornmod67=0then ?判斷是否符合要求printnc=c+l?printnc=c+l?符合要求的單據(jù)加一張endifNextj在for循環(huán)中不需要j=j+1,因為for循環(huán)j的值每次會自己增加步長,此處步長省略沒寫,即表示步長為1,所以j每次會自動增加1。例如玩具裝盒問題:小盒最多裝5個,大盒最多裝12個,1200個玩具多少種裝法。設(shè)小盒為x個,則x的范圍是:0至240;設(shè)大盒為y個,則y的范圍是:0至100要求符合的條件為5*x+12*y=1200,此處有兩個未知數(shù)x、y,所以的用二重循環(huán)(三個未知數(shù)即用三重、四個未知數(shù)即用四重循環(huán)……)DO循環(huán)c=0:x=0:y=0dowhilex〈=240?第一重循環(huán),x的范圍是0至240dowhiley〈=100'第二重循環(huán),y的范圍是0至100

n=5*x+12*y'通過x,y把所有的可能裝法情況列出來fn=1200then?判斷是否符合要求(5*x+12*y=1200)printx,y?通過判斷把符合要求的裝法情況輸出c=c+1endif?符合要求的裝法增加一次y=y+1?y每次增加1直到100loop?第二重循環(huán)結(jié)束x=x+1?x每次增加1直到240loop?第一重循環(huán)結(jié)束FOR循環(huán)c=0forx=0to240?第一重循環(huán),x的范圍是0至240fory=0to100'第一重循環(huán),y的范圍是0至100n=5*x+12*y'通過x,y把所有的可能裝法情況列出來ifn=1200then?判斷是否符合要求(5*x+12*y=1200)printx,y?通過判斷把符合要求的裝法情況輸出c=c+1endif?符合要求的裝法增加一次nexty?第二重循環(huán)結(jié)束nextx?第一重循環(huán)結(jié)束同樣在for循環(huán)中也不需要x=x+1、y=y+1,因為for循環(huán)x、y的值每次會自己增加步長,此處步長省略沒寫,即表示步長為1,所以x、y每次會自動增加1。二、解析算法及程序?qū)崿F(xiàn)是指用解析的方法找出表示問題的前提條件與所求結(jié)果之間關(guān)系的數(shù)學(xué)表達(dá)式,并通過表達(dá)式的計算來實現(xiàn)問題求解。例:同學(xué)們在數(shù)學(xué)的應(yīng)用題中、物理、化學(xué)的計算題中通過理解題意得出表達(dá)式,再通過計算得到答案,所使用的算法就是解析算法。解題方法:主要是要得出前提條件與所求結(jié)果之間關(guān)系的數(shù)學(xué)表達(dá)式,并且在程序中這個數(shù)學(xué)表達(dá)式必須符合VB格式。儲蓄問題,不考慮復(fù)利,年利率2.8%,M元錢需存多少年,才能得到K元本息?k一m設(shè)需要y年,根據(jù)題意得出的數(shù)學(xué)表達(dá)式為:y= ,但是在VB中表達(dá)式必須符合VB0.028xm

語法:y=(k-m)/(0.028*m),流程圖及程序?qū)崿F(xiàn)略。三、冒泡排序算法及程序?qū)崿F(xiàn)冒泡排序的基本思想是把待排序的n個元素的數(shù)組看成是垂直堆放的一列數(shù)據(jù),從最下面的一個元素起,自下而上地比較相鄰的兩個元素中的數(shù)據(jù),將較小的數(shù)據(jù)換到上面的一個元素中。重復(fù)這一過程,直到處理完最后兩個元素中的數(shù)據(jù),稱為一遍加工(一趟冒泡)。當(dāng)?shù)谝槐榧庸ね瓿蓵r,最小的數(shù)據(jù)已經(jīng)上升到第一個元素的位置。然后對余下的n-1個元素重復(fù)上述過程,直至最后進(jìn)行余下兩個數(shù)據(jù)的比較和交換。冒泡排序算法舉例設(shè)有數(shù)列{65,13,76,27,49}第1趟比較第1次{65,13,76,2749}第1趟比較第1次{65,13,76,2749}不需要交換第1趟比較第2次{65,13,76,27,49}76,27交換第1趟比較第3次{65,1327,76,49}不需要交換第1趟比較第4次{65,13,27,76,49}65,13交換第1趟結(jié)束:{13,65,27,76,49}第1趟比較4次,交換2次第2趟比較第1次:{13}{65,27,7649}76,49交換第2趟比較第2次:{13}{65,2749,76}不需要交換第2趟比較第3次:{13}{6527,49,76}65,27交換第2趟結(jié)束:{13,27,65,49,76}第2趟比較3次,交換2次第3趟比較第1次:{13,27}{65,4976}不需要交換第3趟比較第2次:{13,27}{65^49,76}65,49交換第3趟結(jié)束:{13,27,49c65,76}第3趟比較2次,交換1次第4趟比較第1次:{13,27,49}{6576}不需要交換第4趟結(jié)束:{13,27,49,65,76}第4趟比較1次,沒有交換5個元素的數(shù)據(jù)系列,一共冒泡了4趟,分別比較次數(shù)為4、3、2、1,交換次數(shù)根據(jù)實際情況確定。所以可以總結(jié)出,n個元素的數(shù)組系列通過冒泡排序,需要經(jīng)過n-1趟冒泡,總的比較(n1)*n次數(shù)為:(n-1)+(n-2)+(n-3)+???+1= 二次。兩個元素中的數(shù)據(jù)交換一般需要通過第三個變量來進(jìn)行D(1)=5:D(2)=8交換的過程為:T=D(1)

D(2)=T流程圖i*i+1D(2)=T流程圖i*i+1Y9i—1rA¥j_血冒泡排序的程序?qū)崿F(xiàn):通過例子我們知道,5個元素的數(shù)據(jù)系列,一共冒泡了4趟,分別比較次數(shù)為4、3、2、1。所以在程序設(shè)計中工們通過循環(huán)來進(jìn)行控制,需要兩重循環(huán),大循環(huán)控制冒泡了4趟:Fori=1to4Nexti小循環(huán)控制每趟冒泡比較的次數(shù):Forj=5toi(i的值根據(jù)大循環(huán)分別為1到4)Nexti所以小循環(huán)是在大循環(huán)里面的通過判斷ifd(j)<d(j-1)來控制是否需要交換程序主體部份如下:Fori=1ton-1Forj=ntoIstep-1Ifd(j)<d(j-1)thenT=d(j)D(j)=d(j-1)D(j-1)=tEndifNextjNexti四、查找算法及程序?qū)崿F(xiàn)1.順序查找順序查找的基本思想是從第一個數(shù)據(jù)開始,按數(shù)據(jù)的順序逐個將數(shù)據(jù)與給定的值進(jìn)行比較,若某個數(shù)據(jù)和給定值相等,則查找成功,找到所查數(shù)據(jù)的位置;反之,查找不成功。d(1)=65;d(2)=97;d(3)=76;d(4)=13;d(5)=27;d(6)=49;d(7)=58查找key=49程序?qū)崿F(xiàn):Fori=1to7Ifd(i)=keythen輸出找到是第d(i)個ExitforEndif2.對分查找對分查找及

溫馨提示

  • 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

提交評論