欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    VB冒泡排序专题.docx

    • 资源ID:10411972       资源大小:46.68KB        全文页数:6页
    • 资源格式: DOCX        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VB冒泡排序专题.docx

    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不满足降序(后项>前项)则交换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)与 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、字符串的排序:第一个字符一样时,可以排序,按照字符的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.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 个元素用冒泡排序算法进行排序,元素交换次数的范围和元素比较次数的值分别为()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,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(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、假设有 200 个数字存储在数组中,数组下标从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 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整数,单击“排序”的按钮Command1,在列表框 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 IntegerFor2k = 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程序,功能如下: 运行程序时, 在列表框 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应修改为:flag = FalseFor j = n To i + 1 Step -1IfThen1k = a(j): a(j) = a(j - 1): a(j - 1) = k2End IfNext ji = i + 1LoopLabel3.Caption = "排序过程的加工遍数为" +Str(i)应修改为:For i = 1 To nList2.AddItem Str(a(i)Next iEnd Sub

    注意事项

    本文(VB冒泡排序专题.docx)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开