浙教版《算法與程序設計》-經典算法冒泡排序及VB實現(xiàn)知識點及課后練習_第1頁
浙教版《算法與程序設計》-經典算法冒泡排序及VB實現(xiàn)知識點及課后練習_第2頁
浙教版《算法與程序設計》-經典算法冒泡排序及VB實現(xiàn)知識點及課后練習_第3頁
浙教版《算法與程序設計》-經典算法冒泡排序及VB實現(xiàn)知識點及課后練習_第4頁
浙教版《算法與程序設計》-經典算法冒泡排序及VB實現(xiàn)知識點及課后練習_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

浙教版《算法與程序設計》——經典算法冒泡排序及VB實現(xiàn)知識點及課后練習VB冒泡排序專題班級姓名知識點回顧:冒泡排序的特征:從后往前兩兩比較數據,不符合大小關系的兩數交換至達到要求。2、關于冒泡需理解:※升序:將后數小于前數的兩個數進行交換;降序:將后數大于前數的兩數進行交換;※N個數最多進行N-1遍排序;兩數比較的次數最多為N*(N-1)/2;兩數交換次數最多為:N*(N-1)/2;※冒泡有很多改進算法,在練習中要加強理解和記錄;3、冒泡經典代碼:(以降序為例)fori=1ton-1’fori=1ton-1’變量i控制遍數n-1forj=ntoi+1step-1’控制每次比較次數n-i和方向ifd(j)>d(j-1)then’不滿足降序(后項>前項)則交換temp=d(j):d(j)=d(j-1):d(j-1)=tempendifnextjnextifori=1ton-1fori=1ton-1forj=n-1toistep-1’理論上而言,只需控制每次比較次數n-i即可ifd(j)<d(j+1)then’根據j的初值和終值判斷是j+1還是j-1temp=d(j):d(j)=d(j+1):d(j+1)=tempendifnextjnexti冒泡經典算法默認數據從后往前冒,第一次比較的兩個數一定是a(n)與a(n-1),一定是先把最值放a(1)中;而事實上冒泡也可以從前往后冒,第一次比較的兩個數一定是a(1)與a(2),一定是先把最值放在a(n)中。fori=n-1fori=n-1to1step-1forj=2toi+1’控制比較次數n-i和方向ifd(j)>d(j-1)thentemp=d(j):d(j)=d(j-1):d(j-1)=tempendifnextjnextifori=n-1to1step-1’變量i控制遍數n-1forj=1toiifd(j)<d(j+1)thentemp=d(j):d(j)=d(j+1):d(j+1)=tempendifnextjnexti4、字符串的排序:可以排序,按照字符的ASCII碼。從第一個字符開始比較,直到比出大小,即當字符串第一個字符一樣時,按照第二個字母的ASCII碼排,以此類推。例:“bcd”大于“adb”,“efad”小于“efcd”。鞏固練習:1、在運動會上,男生第一組6位選手的百米成績(單位:秒)分別是“13.4、12.3、11.2、13.8、13.1、11.0”,若使用冒泡排序法將該組的成績按第一名、第二名、第三名……的順序排序,則第一遍排序后的順序是();兩遍排序后的順序是();A.11.011.213.813.412.313.1B.11.012.311.213.813.113.4C.11.011.213.412.313.113.8D.11.013.412.311.213.813.1浙教版《算法與程序設計》浙教版《算法與程序設計》——經典算法冒泡排序及VB實現(xiàn)知識點及課后練習全文共4頁,當前為第1頁。2、有一組10個數據的無序序列,利用冒泡排序算法進行從小到大的排序,需要比較的次數和最多交換的次數,最多需要進行加工的遍數分別為()A.9,45,9B.45,15,9C.45,45,9D.15,45,83、在NBA某賽季中,快船隊5場比賽得分依次為97,89,111,70,90,若采用冒泡排序算法對其進行從小到大排序,在整個排序過程中,數據97被交換的次數是()A.1次B.2次C.3次D.4次4、對存儲在stu(0ton)中的n+1個元素用冒泡排序算法進行排序,元素交換次數的范圍和元素比較次數的值分別為()A、[0,n],(n-1)*n/2B、[1,(n+1)*n/2],(n-1)*n/2C、[0,(n+1)*n/2],(n+1)*n/2D、[1,n-1],(n+1)*n/25、下列關于排序的算法,不正確的是()A.對N個數組元素進行排序,冒泡排序和選擇排序排序的遍數一樣B.對N個數組元素進行排序,冒泡排序和選擇排序比較的次數一樣C.對N個數組元素進行排序,冒泡排序和選擇排序在排序過程中交換次數一樣D.一般情況下,選擇排序比冒泡排序效率更高6、有如下程序段:Fori=7to5step-1Forj=7to9-istep-1Ifa(j)>a(j-1)thenk=a(j):a(j)=a(j-1):a(j-1)=kEndifNextjNexti數組元素a(1)到a(7)的數據依次為3,9,1,5,8,6,2經過該程序段加工后,a(1)到a(3)排列為()A.123B.986C.391D.8657、有如下VB程序段,已知數組a中有10個元素,保存的數據分別為:56、21、18、64、72、49、3、7、22、80,則程序運行后變量m的值為EQ\o\ac(○,1)m=0:i=1Dowhilei<=10ifm<a(i)thenm=a(i)i=i+1Loop8、以下程序段的功能是找到a(0)到a(99)中最小值并顯示在label1上,請?zhí)羁眨簃=a(0)Fori=1to99ifEQ\o\ac(○,1)thenm=a(i)nextiEQ\o\ac(○,2)9、以下程序段的功能是找到a(1)到a(10)中最大值存儲在a(10)中并打印在界面上,請?zhí)羁眨篺ori=1toEQ\o\ac(○,1)ifa(i)>a(i+1)thent=a(i):a(i)=a(i+1):a(i+1)=tNextiprintEQ\o\ac(○,2)浙教版《算法與程序設計》——經典算法冒泡排序及VB實現(xiàn)知識點及課后練習全文共4頁,當前為第2頁。10、數組a(1to10)中保存的數據依次分別為:80、7、56、21、18、64、72、49、38、22,則程序運行后變量m的值為EQ\o\ac(○,1)j的值為EQ\o\ac(○,2)text1.text中顯示的內容為EQ\o\ac(○,3)。浙教版《算法與程序設計》——經典算法冒泡排序及VB實現(xiàn)知識點及課后練習全文共4頁,當前為第2頁。m=1Forj=2to11step1Ifa(m)>=a(j-1)thenm=j-1NextjText1.text=str(a(j-2))11、假設有200個數字存儲在數組中,數組下標從1開始,請運用冒泡排序及冒泡排序的變式將數組按要求排列,在橫線上填上正確的代碼。降序(常規(guī)冒泡)升序(常規(guī)冒泡)fori=1to199forj=200toEQ\o\ac(○,1)step-1ifa(j)>EQ\o\ac(○,2)thentemp=a(j)a(j)=a(j-1)a(j-1)=tempendifnextjnexti

fora=1to199forb=EQ\o\ac(○,1)toastep-1ifs(b)EQ\o\ac(○,2)thentemp=s(b)EQ\o\ac(○,3)s(b+1)=tempendifnextbnexta降序(從前往后冒,小的數往后移)升序(從前往后冒,大的數往后移)fori=199to1step-1forj=eq\o\ac(○,1)toiifa(j)eq\o\ac(○,2)thentemp=a(j)a(j)=a(j+1)a(j+1)=tempendifnextjnexti

forx=199to1step-1fory=2toeq\o\ac(○,1)ifa(y)eq\o\ac(○,2)thena(y)=a(y)+a(y-1)eq\o\ac(○,3)a(y)=a(y)-a(y-1)endifnextynextx12、在冒泡排序時,當某一遍加工過程中沒有數據交換,說明數據已經有序,無需進一步加工。為此小明對冒泡排序進行了優(yōu)化,編寫了一個VB程序,功能如下,程序窗體加載即運行時,在列表框List1中顯示隨機產生的n個[0,100]整數,單擊“排序”的按鈕Command1,在列表框List2中顯示降序排序后的結果,運行的效果圖所示。實現(xiàn)上述功能的VB代碼如下,請在劃線處填空,并改正有錯的加框處代碼。ConstnAsInteger=10Dima(1Ton)AsIntegerPrivateSubForm_Load()DimiAsIntegerRandomizeFori=1Toneq\o\ac(○,1)List1.AddItemStr(a(i))NextiEndSub浙教版《算法與程序設計》浙教版《算法與程序設計》——經典算法冒泡排序及VB實現(xiàn)知識點及課后練習全文共4頁,當前為第3頁。PrivateSubCommand1_Click()DimtmpAsInteger,iAsInteger,jAsInteger,kAsIntegerForeq\o\ac(○,2)k=0Forj=nToi+1Step-1Ifa(j)>a(j-1)Thentmp=a(j):a(j-1)=a(j):a(j)=tmp應修改為:tmp=a(j):a(j-1)=a(j):a(j)=tmpk=k+1EndIfK>0NextjK>0IfTheni=n應修改為:NextiFori=1Toneq\o\ac(○,3)NextiEndSub13、n個數據的冒泡排序需要經過n-1遍加工,每一遍加工自下而上比較相鄰兩個數據,把較小者交換到上面。小劉發(fā)現(xiàn):當某一遍加工過程中沒有數據交換,說明數據已經有序,無需進一步加工。為此,小劉對算法進行優(yōu)化,編寫了一個VB程序,功能如下:運行程序時,在列表框List1中顯示排序前數據,單擊“排序”按鈕Commaiid1,在列表框List2中顯示這些數據按升序排序后的結果,在標簽Label3中顯示排序過程的加工遍數。運行效果如圖所示。實現(xiàn)上述功能的VB代碼如下,但加框處代碼有錯,請改正。Dima(1To8),nAsI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論