VB冒泡排序专题_第1页
VB冒泡排序专题_第2页
VB冒泡排序专题_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、)与 a(2),一定是先把最值放在a(1)中;a(n)中。for i=n-1 to 1step -1变量 i 控制遍数n-1for j= 1 to iif d(j)<d(j+1) thentemp=d(j) : d(j)=d(j+1) :d(j+1)=tempend ifnext jnext ifor i=n-1 to 1step -1for j= 2 to i+1控制比较次数n-i 和方向if d(j)>d(j-1) thentemp=d(j) : d(j)=d(j-1) :d(j-1)=tempend ifnext jnext i4、字符串的排序:第一个字符一样时,可以排序,按

4、照字符的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

5、.313.113.8D.11.013.412.311.213.813.12、有一组10 个数据的无序序列,利用冒泡排序算法进行从小到大的排序,需要比较的次数和最多交换的次数,最多需要进行加工的遍数分别为()A. 9, 45, 9B. 45, 15, 9C.45, 45, 9D.15, 45, 83、在 NBA某赛季中,快船队5 场比赛得分依次为97, 89, 111, 70, 90,若采用冒泡排序算法对其进行从小到大排序,在整个排序过程中,数据97 被交换的次数是()A 1次B2次C3次D4次4、对存储在stu ( 0 to n )中的 n+1 个元素用冒泡排序算法进行排序,元素交换次数的范围

6、和元素比较次数的值分别为()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、下列关于排序的算法,不正确的是()D 一般情况下,选择排序比冒泡排序效率更高6、有如下程序段:For i=7 to 5 step -1For j=7 to 9-i step -1If a(j)>a(j-1) thenk=a(j):a(j)=a(j-1):a(j-1)=kEnd ifNext jNext i数组元素 a(1) 到 a(7) 的数据依次为3

7、,9,1,5,8,6,2 经过该程序段加工后, a(1) 到 a(3) 排列为 ()A123B 986C 391D 8657、有如下VB程序段,已知数组a 中有 10 个元素,保存的数据分别为:56、21、 18、64、 72、49、 3、7、22、 80,则程序运行后变量m的值为1m=0:i=1Do while i<=10if m<a(i) then m=a(i)i=i+1Loop8、以下程序段的功能是找到a(0) 到 a(99) 中最小值 并显示在label1上,请填空:m=a(0)Fori=1 to 99if1then m=a(i)next i29、以下程序段的功能是找到a(

8、1) 到 a(10) 中最大值存储在a(10) 中并打印在界面上,请填空:for i=1 to1if a(i)>a(i+1) then t=a(i):a(i)=a(i+1):a(i+1)=tNext iprint210、数组 a( 1 to 10)中保存的数据依次分别为:80、 7、 56、21、 18、64、 72、49、 38、 22,则程序运行后变量 m的值为 1j的值为 2text1.text中显示的内容为3。m=1For j=2 to 11 step 1If a(m)>=a(j-1) thenm=j-1Next jText1.text=str(a(j-2)11、假设有 2

9、00 个数字存储在数组中,数组下标从1 开始,请运用冒泡排序及冒泡排序的变式将数组按要求排列,在横线上填上正确的代码。降序(常规冒泡)升序(常规冒泡)for i=1 to 199step -1for a=1 to 199to a step -1for j=200 toforb=11ifa(j)>thenifs(b)then22temp=a(j)temp=s(b)a(j)=a(j-1)3a(j-1)=temps(b+1)=tempend ifend ifnext jnext bnext inext a降序(从前往后冒,小的数往后移)升序(从前往后冒,大的数往后移)for i=199 to

10、1 step -1for x=199 to 1 step -1for j=1to ifory=2 to1ifa(j)2thenifa(y)2thentemp=a(j)a(y)=a(y)+a(y-1)a(j)=a(j+1)3a(j+1)=tempa(y)=a(y)-a(y-1)end ifend ifnext jnext ynext inext x12、在冒泡排序时,当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此小明对冒泡排序进行了优化,编写了一个VB程序,功能如下,程序窗体加载即运行时,在列表框List1中显示随机产生的 n 个 0,100整数,单击“排序”的按钮Com

11、mand1,在列表框 List2中显示降序排序后的结果,运行的效果图所示。实现上述功能的VB代码如下,请在划线处填空,并改正有错的加框处代码。Const n As Integer = 10Dim a(1 To n) As IntegerPrivate Sub Form_Load()Dim i As IntegerRandomizeFor i = 1 To n1List1.AddItem Str(a(i)Next iEnd SubPrivate Sub Command1_Click()Dim tmp As Integer, i As Integer, j As Integer, k As Int

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

13、程序,功能如下: 运行程序时, 在列表框 List1中显示排序前数据,单击“排序”按钮 Commaiid1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label3 中显示排序过程的加工遍数。运行效果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。Dim a(1 To 8),n As IntegerPrivate Sub Form_Load()' n=8,排序前数据存储在数组a 中,并 在列表框Listl 中显 示;代码略End SubPrivate Sub Command1_Click()Dim flag As Boolean' flag 值为 True 表示一遍加工中发生过交换i = 1 : flag = TrueDo Whilei <= n Or flag应修改为:fla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论