VB常用算法-排序_第1頁
VB常用算法-排序_第2頁
VB常用算法-排序_第3頁
VB常用算法-排序_第4頁
VB常用算法-排序_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VB??妓惴ǎò耍┡判颍?、算法1)選擇法排序算法說明:依據(jù)上例中求最小值的思路,我們可以使用以下方法進(jìn)行從小到大排序:第一輪,以第一個(gè)元素逐一跟后邊的全部元素比較,假如比后邊的元素大就進(jìn)行交換,經(jīng)過一輪比較,第一個(gè)元素被確立為最?。幌嗤姆椒?,下一輪以第二個(gè)元素跟剩下的全部元素進(jìn)行比較確立下次小的元素;以此類推下邊我們以圖形的形式表現(xiàn)對(duì)5個(gè)數(shù)進(jìn)行選擇排序的過程:第一輪:62211最小值26666444441112255555第二輪:11116422次小值466622445555第三輪:第四輪:1111122222644444666555556從上圖可以發(fā)現(xiàn)對(duì)5個(gè)元素進(jìn)行排序,總合經(jīng)過了5-1=4輪,而每一輪中比較的次數(shù)也不相同,第一輪2、3、4、5號(hào)元素參加跟1號(hào)元素的比較,共4次,第二輪3、4、5號(hào)元素參加跟2號(hào)元素的比較,共3次,以次類推,比較次數(shù)逐漸減少。經(jīng)過四輪的比較,利用逐漸求最小值的方法將5個(gè)數(shù)從小到大排好序。對(duì)于這樣一個(gè)排序的過程,我們可以使用兩個(gè)循環(huán)分別控制比較的輪數(shù)和每一輪的次數(shù)。程序代碼:PrivateSubCommand1_Click( )DimnAsIntegern=InputBox("請(qǐng)輸入數(shù)組元素的個(gè)數(shù):Dima( )AsInteger,iAsInteger,jAsIntegerPrint"排序前:"ReDima(n)Fori=1Tona(i)=Int(Rnd*(99-10+1)+10)Printa(i);

")NextiFori=1Ton-1Forj=iTonIfa(i)>a(j)Thentemp=a(i)'交換元素a(i)=a(j)a(j)=tempEndIfNextjNextiPrintPrint"排序后:"Fori=1TonPrinta(i);NextiEndSub2)冒泡法排序算法說明:相鄰的元素進(jìn)行比較,假如前面的元素比后邊的元素大,則將它們進(jìn)行交換,詳盡思路:設(shè)在數(shù)組a中存放n個(gè)元素,第一輪,將a(1)和a(2)進(jìn)行比較,若a(1)>a(2),則交換這兩個(gè)元素的值,而后連續(xù)用a(2)和a(3)比較,若a(1)>a(2),則交換這兩個(gè)元素的值,以此類推,直到a(n-1)和a(n)進(jìn)行比較辦理后,a(n)中就存放了n個(gè)數(shù)中最大的值;第二輪,用a(1)與a(2),a(2)與a(3),,a(n-2)與a(n-1)進(jìn)行比較,辦理方法相同,這一輪下來,a(n-1)中存放n個(gè)數(shù)中第二大的值;;第n-1輪,a(1)與a(2)進(jìn)行比較辦理,保證最小值在a(1)中。經(jīng)過n-1輪比較辦理,n個(gè)數(shù)已經(jīng)按從小到大的序次擺列好。下邊我們以圖形的形式表現(xiàn)對(duì)5個(gè)數(shù)進(jìn)行冒泡排序的過程:第一輪:622222644444611第二輪:11165最大值5555622224411114455556666第三輪:第四輪:21111122224444455555666662、實(shí)戰(zhàn)練習(xí)1)填程序一算法說明:C盤根目錄下的數(shù)據(jù)文件data.txt中有兩組數(shù)據(jù),第一組數(shù)據(jù)未排序,并以-1表示該組數(shù)據(jù)結(jié)束;第二組數(shù)據(jù)按從小到大序次擺列。下邊程序的功能是,單擊“讀入數(shù)據(jù)”按鈕,將文件中的兩組數(shù)據(jù),分別讀入到A、B數(shù)組中,單擊“插入排序”按鈕,則把A數(shù)組的元素按其大小挨次插入到B數(shù)組的合適地址,使得B數(shù)組中元素仍為從小到大擺列。完美程序,實(shí)現(xiàn)以上功能。程序代碼:PrivateSubCommand1_Click( )DimnAsIntegern=InputBox("請(qǐng)輸入數(shù)組元素的個(gè)數(shù):")Dima( )AsInteger,iAsInteger,jAsIntegerPrint"排序前:"ReDima(n)Fori=1Tona(i)=Int(Rnd*(99-10+1)+10)Printa(i);NextiFori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Then'相鄰元素比較temp=a(j)a(j)=a(j+1)a(j+1)=tempEndIfNextjNextiPrintPrint"排序后:"Fori=1TonPrinta(i);NextiEndSubDima( )AsInteger,b( )AsIntegerPrivateSubcommand1_click( )DimIAsInteger,jAsInteger,nAsInteger,sAsString(1)‘參照答案:Open"c:\data.txt"ForInputAs#11DoInput#11,nIfn=-1ThenExitDoI=I+1ReDimPreservea(I)a(I)=ns=s&Str(a(I))LoopText1=ss=""‘參照答案:DoWhileNotEOF(1)j=j+1ReDimPreserveb(j)Input#11,b(j)s=s&Str(b(j))‘參照答案:ReDimPreserveb(UBound(b)+1)b(UBound(b))=a(I)ElseForj=2Tobound(b)If(a(I)>b(j-1))Anda(I)<=b(j)ThenCallchange(a(I),j)NextjEndIfNextIForI=1ToUBound(b)s=s&Str(b(I))NextIText3=sEndSubPrivateSubchange(nAsInteger,kAsInteger)DimIAsIntegerReDimPreserveb(UBound(b)+1)ForI=UBound(b)Tok+1Step-1(4)‘參照答案:b(I)=b(I-1)NextI(5)‘參照答案:b(k)=nEndSub2)填程序二OptionBase1Dimn%,tag_in%Dimstud(1To10)AsStudTypeTypeStudTypeNumAsString*6NameAsString*8AverageAsSingleEndTypePrivateSubCommand1_Click( )

'學(xué)號(hào)'姓名'均勻分Ifn<10Thentag_in=0n=n+1Elsetag_in=1MsgBox"輸入的學(xué)生人數(shù)已超出數(shù)組申明的個(gè)數(shù)!"EndIfIftag_in=0ThenIfText1=""ThenMsgBox"學(xué)號(hào)不可以為空,請(qǐng)重輸!"n=(1)Else(2)=Text1stud(n).Name=Text2stud(n).Average=Val(Text3)EndIfEndIfText1="":Text2="":Text3=""EndSubPrivateSubCommand2_Click( )DimtAsStudTypePicture1.ClsForj=1Ton-1Fork=(3)TonIfstu

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論