(完整版)VB冒泡排序专题.doc

上传人:可****阿 文档编号:82385755 上传时间:2023-03-25 格式:DOC 页数:4 大小:345KB
返回 下载 相关 举报
(完整版)VB冒泡排序专题.doc_第1页
第1页 / 共4页
(完整版)VB冒泡排序专题.doc_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《(完整版)VB冒泡排序专题.doc》由会员分享,可在线阅读,更多相关《(完整版)VB冒泡排序专题.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、换 temp=d(j): d(j)=d(j-1):d(j-1)=temp end if next jnext i for i=1 to n-1 for j=n-1 to i step -1 理论上而言,只需控制每次比较次数n-i即可 if d(j)d(j-1) then temp=d(j): d(j)=d(j-1):d(j-1)=temp end if next jnext i for i=n-1 to 1 step -1 变量i控制遍数n-1 for j= 1 to i if d(j)a(j-1) then k=a(j):a(j)=a(j-1):a(j-1)=k End if Next jN

3、ext i数组元素a(1)到a(7)的数据依次为3,9,1,5,8,6,2 经过该程序段加工后,a(1)到a(3)排列为( )A1 2 3 B 9 8 6 C 3 9 1 D 8 6 5 7、有如下VB程序段,已知数组a中有10个元素,保存的数据分别为:56、21、18、64、72、49、3、7、22、80,则程序运行后变量m的值为 m=0:i=1Do while i=10 if ma(i+1) then t=a(i):a(i)=a(i+1):a(i+1)=t Next iprint 10、数组a(1 to 10) 中保存的数据依次分别为:80、7、56、21、18、64、72、49、38、2

4、2,则程序运行后变量m的值为 j的值为 text1.text中显示的内容为 。m=1For j=2 to 11 step 1 If a(m)=a(j-1) then m=j-1Next jText1.text=str(a(j-2)11、假设有200个数字存储在数组中,数组下标从1开始,请运用冒泡排序及冒泡排序的变式将数组按要求排列,在横线上填上正确的代码。降序(常规冒泡)升序(常规冒泡)for i=1 to 199 for j=200 to step -1 if a(j) then temp=a(j) a(j)=a(j-1) a(j-1)=temp end if next jnext ifor

5、 a=1 to 199 for b= to a step -1 if s(b) then temp=s(b) s(b+1)=temp end if next bnext a降序(从前往后冒,小的数往后移)升序(从前往后冒,大的数往后移)for i=199 to 1 step -1 for j= to i if a(j) then temp=a(j) a(j)=a(j+1) a(j+1)=temp end if next jnext ifor x=199 to 1 step -1 for y=2 to if a(y) then a(y)=a(y)+a(y-1) a(y)=a(y)-a(y-1)

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

7、 Randomize For i = 1 To n List1.AddItem Str(a(i) Next iEnd SubPrivate Sub Command1_Click() Dim tmp As Integer, i As Integer, j As Integer, k As Integer For k = 0 For 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 + 1 End IfK0 Next j If Then i = n 应修改为

8、: Next i For i = 1 To n Next iEnd Sub13、n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2 中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。Dim a(1 To 8),n As

9、IntegerPrivate Sub Form_Load()n=8,排序前数据存储在数组a中,并在列表框Listl中显示;代码略End SubPrivate Sub Command1_Click()Dim flag As Boolean flag值为True表示一遍加工中发生过交换i = 1:flag = Truei = n Or flag Do While 应修改为: flag = False For j = n To i + 1 Step -1 If Then k = a(j): a(j) = a(j - 1): a(j - 1) = k End If Next j i = i + 1Str(i)LoopLabel3.Caption = 排序过程的加工遍数为 + 应修改为: For i = 1 To n List2.AddItem Str(a(i)Next iEnd Sub

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

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁