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

下载本文档

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

文档简介

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

2、e Sub Form_Load()'n=8,排序前数据存储在数组a中,并在列表框Listl中显示 '代码略End SubPrivate Sub Command1_Click()Dim flag As Boolean 'flag值为True表示一遍加工中发生过交换i = 1flag = TrueDo While '(1) i <= n - 1 Or flag = True flag = False For j = n To i + 1 Step -1 If a(j) < a(j - 1) Then k = a(j): a(j) = a(j - 1):

3、a(j - 1) = k flag = True End If Next j i = i + 1LoopStr(i)Label3.Caption = "排序过程的加工遍数为" + '(2)For i = 1 To n List2.AddItem Str(a(i)Next iEnd Sub第16题图16【加试题】小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序

4、过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。实现上述功能的VB程序如下,但加框处代码有错,请改正。Dim a(1 To 8) As IntegerDim n As IntegerPrivate Sub Form_Load()a(1) = 30: a(2) = 47: a(3) = 30: a(4) = 72a(5) = 70: a(6) = 23: a(7) = 99: a(8) = 24n = 8For i = 1 To 8List1.AddItem a(i)Next iEnd SubPrivate Sub Command1_Click()Dim i A

5、s Integer, j As Integer, k As IntegerDim pos As IntegerDim s As Strings = Text1.Textpos = Val(Text1.Text)For i = 1 To n - 1For j = n To i + 1 Step -1If a(j) < a(j - 1) Then k = a(j)a(j - 1) = a(j)a(j) = k'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置If pos = j Then pos = j - 1s = s + "" + Str(po

6、s) Elsepos = js = s + "" + Str(pos)End IfEnd IfNext jNext iLabel1.Caption = "位置变化情况:" + s数组元素数组元素的含义a(1)存储班级数na(2)从a(2)到a(n+1) 依次存储第1、2、第n个班级人数a(n+1)a(n+2)从a(n+2) 依次存储第1班每个学生的单科成绩、第2班每个学生的单科成绩、第n班每个学生的单科成绩 For i = 1 To nList2.AddItem Str(a(i)Next iEnd Sub16【加试题】小李基于冒泡排序算法编写了一个VB程

7、序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。实现上述功能的VB程序如下,但加框处代码有错,请改正。Const n = 10Dim a(1 To n) As IntegerPrivate Sub Command1_Click()Dim i As Integer, j As Integer, t As IntegerDim bottom As Integer'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom = ni = 1Do While i <= bottom - 1 For j = bottom To i + 1 Step -1 If a(j) < a(i) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t ElseIf a(j) = a(j - 1) Then ' 相邻两个数据相等,进行剔除处理 a(bottom)=a(j) bottom = bottom - 1

温馨提示

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

评论

0/150

提交评论