VB冒泡排序专题

上传人:re****.1 文档编号:507561301 上传时间:2023-10-31 格式:DOCX 页数:4 大小:33.45KB
返回 下载 相关 举报
VB冒泡排序专题_第1页
第1页 / 共4页
VB冒泡排序专题_第2页
第2页 / 共4页
VB冒泡排序专题_第3页
第3页 / 共4页
VB冒泡排序专题_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《VB冒泡排序专题》由会员分享,可在线阅读,更多相关《VB冒泡排序专题(4页珍藏版)》请在金锄头文库上搜索。

1、VB冒泡排序专题班级姓名知识点回顾:1、冒泡排序的特征:从后往前两两比较数据,不符合大小关系的两数交换至达到要求。2、关于冒泡需理解:升序:将后数小于前数的两个数进行交换;降序:将后数大于前数的两数进行交换;比个数最多进行N-1遍排序;两数比较的次数最多为N*(N-1)/2;两数交换次数最多为:N*(N-1)/2; 冒泡有很多改进算法,在练习中要加强理解和记录;3、冒泡经典代码:(以降序为例 )for i=1 to n-1变量i控制遍数n-1for j=n to i+1 step -1 控制每次比较次数n-i和方向if d(j)d(j-1) then 不满足降序(后项前项)则交换temp=d(

2、j): d(j)=d(j-1):d(j-1)=tempend ifnext jnext ifor i=1 to n-1for j=n-1 to i step -1理论上而言,只需控制每次比较次数n-i即可if d(j)d(j+1) then根据j的初值和终值判断是j+1还是j-1temp=d(j): d(j)=d(j+1):d(j+1)=tempend if冒泡经典算法默认数据从后往前冒,第一次比较的两个数一定是a(n)与a(n-1), 定是先把最值放a(1)中; 而事实上冒泡也可以从前往后冒,第一次比较的两个数一定是a(1)与a(2),一定是先把最值放在a(n)中。for i=n-1 to

3、1 step -1 变量 i 控制遍数 n-1for j= 1 to iif d(j)d(j-1) thentemp=d(j): d(j)=d(j-1):d(j-1)=temp end ifnext jnext i个字符开始比较,直到比出大小,即当字符串第 个字符 样时,按照第一个字母的ASCII码排,以此类推E。例:bed大于adb, efad小于efed。巩固练习:I、在运动会上,男生第一组 6 位选手的百米成绩(单位:秒)分别是 “13.4、12.3、11.2、13.8、13.1、II. 0,若使用冒泡排序法将该组的成绩按第一名、第二名、第三名的顺序排序,则第一遍排序后的顺序是( );两

4、遍排序后的顺序是();A. 11.0 11.2 13.8 13.4 12.3 13.1B.11.0 12.3 11.2 13.8 13.1 13.4C. 11.0 11.2 13.4 12.3 13.1 13.8D.11.0 13.4 12.3 11.2 13.8 13.12、有一组 10 个数据的无序序列,利用冒泡排序算法进行从小到大的排序,需要比较的次数和最多交换的 次数,最多需要进行加工的遍数分别为( )A. 9,45,9 B. 45,15,9 C.45,45,9 D.15,45,83、在NBA某赛季中,快船队5场比赛得分依次为97,89,111, 70,90,若采用冒泡排序算法对其进行

5、从小到大排序,在整个排序过程中,数据97被交换的次数是()A.1次B. 2次C.3次D.4次4、对存储在stu ( 0 to n )中的n+1个元素用冒泡排序算法进行排序,元素交换次数的范围和元素比 较次数的值分别为( )A、0,n,(n-1)*n/2 B、1,(n+1)*n/2,(n-1)*n/2 C、0,(n+1)*n/2,(n+1)*n/2D、1,n-1,(n+1)*n/25、下列关于排序的算法,不正确的是()A. 对N个数组元素进行排序,冒泡排序和选择排序排序的遍数一样B. 对N个数组元素进行排序,冒泡排序和选择排序比较的次数一样C. 对N个数组元素进行排序,冒泡排序和选择排序在排序过

6、程中交换次数一样D. 般情况下,选择排序比冒泡排序效率更高6、有如下程序段:For i=7 to 5 step -1For j=7 to 9-i step -1If a(j)a(j-1) then k=a(j):a(j)=a(j-1):a(j-1)=kEnd ifNext j Next i 数组元素a(l)到a(7)的数据依次为3, 9,1, 5, 8, 6, 2经过该程序段加工后,a( 1)到a(3)排列为( )A.1 2 3B. 9 8 6C. 3 9 1D. 8 6 57、有如下VB程序段,已知数组a中有10个元素,保存的数据分别为:56、21、18、64、72、49、3、7、 22、8

7、0,则程序运行后变量m的值为Qm=0:i=1Do while i=10if m Qthent emp=a(j) a(j)=a(j-1) a(j-1 )=t empend ifnext jnex t ifor a=1 to 199for b=Qto a step -1if s(b)Qt hentemp=s(b)Q s(b+1)二t emp end ifnex t bnex t a降序(从前往后冒,小的数往后移)升序(从前往后冒,大的数往后移)for i=199 to 1 step -1for j=Qto i辻 a(i) Qthent emp=a(j) a(j)=a(j+1) a(j+1)二t e

8、mpend ifnext jnex t ifor x=199 to 1 step -1 for y=2 to Q辻 a(y)Qt hena(y)=a(y)+a(y-1)a(y)=a(y)-a(y-1) end ifnex t ynex t xConst n As Integer = 10Dim a(1 To n) As IntegerPrivate Sub Form_Load()Dim i As Integer RandomizeFor i = 1 To nList1 .AddItem Str (a(i)Nex t iEnd Sub9696浜967073i卩70圧705169茁開513e365

9、329排序前的数据排序后的数据排序12、在冒泡排序时,当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此小明 对冒泡排序进行了优化,编写了一个VB程序,功能如下,程序窗体加载即运行时,在列表框List1中显 示随机产生的n个0,100整数,单击“排序”的按钮Command1,在列表框List2中显示降序排序后的结 果,运行的效果图所示。实现上述功能的VB代码如下,请在划线处填空,并改正有错的加框处代码。Private Sub Command1_Click()Dim tmp As Integer, i As Integer, j As Integer, k As Intege

10、r For Qk = 0For j = n To i + 1 Step -1 If a(j) a(j - 1) Thentmp 二 a(j): a(j - 1) = a(j): a(j) = tmp 应修改为:k = k + 1End IfNex t jIf | k0 | Then i = n 应修改为:Nex t iFor i = 1 To nQNex t iEnd Sub13、n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到 上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘 对算法进行优化,编写了一个VB

11、程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单 击“排序”按钮Commaiid1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label3中显 示排序过程的加工遍数。运行效果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。 Dim a(1 To 8),n As IntegerPrivate Sub Form_Load()n=8,排序前数据存储在数组a中,并在列表框Lis tl中显示;代码略End SubPrivate Sub Command1_Click()Dim flag As Boolean flag值为True表示一遍加工中发生过交换i = 1: flag = TrueDo While i = n Or flag应修改为_flag = FalseFor j = n To i + 1 Step -1 If Q Thenk = a(j): a(j) = a(j - 1): a(j - 1) = k QEnd IfNex t ji = i + 1LoopLabel3.Cap tion =排序过程的加工遍数为+ St r(i)|应修改为:For i = 1 To nLis t2.Add Item Str (a(i)Nex t iEnd Sub

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号