版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1冒泡排序算法的基本思想 冒泡排序是在一列数据中把较小(大)的数据逐次向上推移的一种排序技术。该算法的基本思想是把待排序的n个元素的数组看成是垂直堆放的一列数据,从最下面的一个元素起,自下而上地比较相邻的两个元素中的数据,将较小(大)的数据换到上面的一个元素中。重复这一过程,直到处理完最后两个元素中的数据,称为一趟加工。当第一趟加工完成时,最小(大)的数据已经上升到第一个元素的位置。然后对余下的n1个元素重复上述处理过程,直至最后余下两个数据的比较和交换,34 冒泡排序算法及程序实现,由于每一趟加工都是将本趟最小(大)的数元素像气泡一样浮至本趟的顶端位置,所以称作冒泡排序。但冒泡也有变式,即将
2、数组元素进行两两比较,若相邻两个元素中的数据不符合排序,就交换位置。 某数组c共由4个元素构成,每个元素的值如下表所示,采用冒泡排序思想进行升序排序,从最下面的一个元素起,自下而上的比较相邻两个元素中的数据,整个排序过程如下所示: 第一趟加工处理过程,第一趟加工共比较3次,处理完成后,最小的元素15存储在了c(1)中,第二趟加工处理过程,第二趟加工共比较2次,处理完成后,第2个最小的元素23存储在了c(2)中,第三趟加工处理过程,第三趟加工共比较1次,处理完成后,第3个小的元素32存储在了c(3)中。 4个元素共需进行3趟加工处理,总的比较次数为3216次。 对n个元素的数组,用冒泡法进行排序
3、时,共需比较n(n1)/2次,2冒泡排序算法的程序实现 冒泡排序程序的实现可用双重For循环来实现,外层For循环控制是第几遍加工,内层For循环控制进行排序的数组元素下标的变化范围。由于每趟加工完成后,进行排序的范围会发生变化(每趟减少一个),故内层For循环变量的下界由外层循环变量决定,现有n个数据,分别存放在数组变量a(1 To n)当中,用冒泡排序算法表示结构如下,用冒泡排序算法程序实现的片段如下: For i1 To n1 For jn To i1 Step 1 If a(j)a(j1) Then ta(j):a(j)a(j1):a(j1)t End If Next j Next i
4、 当外循环变量i取1时,即第1趟加工时,内循环变量j的下界为i1(值为2),即从a(n)开始自下而上的比较相邻的两个元素中的数,如果下面的数比上面的小,则相互交换,直到a(2)与a(1)的比较为止,这样第1趟加工后将最小的数放到了a(1)中;第2趟加工,内循环变量j的下界为3,直到a(3)和a(2)的比较为止,把最小的数放到了a(2)中;这样,经过n1趟加工后,就完成了数组从小到大的排序,中间的If语句,完成相邻的两个元素的比较过程,如果下面的数a(j)比上面的数a(j1)小,则交换a(j)与a(j1)的值。用语句ta(j):a(j)a(j1):a(j1)t来实现。 3读程序时,判断冒泡排序的
5、结果是从小到大还是从大到小,方法就是分析内循环中的条件判断语句,如果交换数据的条件是前面元素小于后面元素,如a(j)a(j1),则排序结果是从大到小。反之,如果交换数据的条件是前面元素大于后面元素,如a(j)a(j1)、a(j)a(j1),则排序结果是从小到大,注意:以下代码也可实现对数组h(共n个元素)进行冒泡排序: For i 1 To n 1 For j i 1 To n If h(i) h(j) Then t h(i): h(i) h(j): h(j) t End If Next j Next i,本节课学习要理解冒泡排序算法的基本思想,能根据冒泡排序的思想,对一组数据进行冒泡排序。掌
6、握冒泡排序算法的程序实现,能根据给出的题目自行编写冒泡程序。考查方式为选择题与填空题,某书店在5所学校流动售书量(单位:本)分别是82、113、46、69、35。采用冒泡排序对其进行排序,若完成第一遍时的结果是35、82、113、46、69,则完成第二遍时的结果是() A35、82、113、46、69 B35、46、82、69、113 C35、46、82、113、69 D35、46、69、82、113,C,2下表记录了6个数据的排序过程。分析表中数据可知,该排序采用的算法与排序方式分别为 (,冒泡排序,降序 选择排序,降序 冒泡排序,升序 选择排序,升序,C,3实现某排序算法的部分VB程序如下
7、: For i 1 To 4 For j 5 To i 1 Step 1 If a(j)a(j1) Then ta(j):a(j)a(j1):a(j1)t Next j Next i 在经过某一遍排序“加工”后,数组元素a(l)到a(5)的数据依次为“25、77、51、59、32”。则 下一遍排序“加工”后数组元素a(l)到a(5)的数据应该是 () A25、32、77、51、59 B25、32、51、59、77 C25、32、59、51、77 D25、32、51、7、59,A,4有一组原始数据:23、25、18、63、84、77、65、9、33、17。利用冒泡排序算法进行从小到大排序,最多需
8、要进行()次加工,才可以完成整个数据的排序。 A5B6C8D9,D,书籍将数据3、6、9、5、8、1进行一趟冒泡排序后得到的数据刚好是小杨的银行卡密码,那么小杨的银行卡密码是() A369581B136958 C135698D316958,B,在某年市机器人投蓝比赛决赛中,共有5支队伍参加,各队的最终成绩如下:82、74、66、95、70(单位:个/分钟),现用冒泡排序算法来实现这些数据的排序操作,则在第2遍加工的操作中,共需要交换数据的次数是() A. 1次B. 2次C. 3次D. 4次,B,有如下VB程序段: s“ ” For i 1 To 3 For j 6 To i 1 Step 1
9、If a(j)a(j1) Then ka(j):a(j)a(j1):a(j1)k End If Next j s s str(a(i) Next i Text1.Textstr(s,数组元素从a(1)到a(6)的数据依次为“3、7、2、5、8、9”,经过该程序“加工”后,文本框Text1中显示的是() A9 8 7 B2 3 5 C3 7 2 D7 3 2,B,有一组原始数据:13、15、8、65、14、33。若采用冒泡法进行排序,则共需比较的次数为 () A21B15C10D28,B,设计一个VB程序,点击“随机产生15个整数”按钮,程序自动在列表框List1中产生15个1000以内的随机非
10、负数,点击“冒泡排序”按钮,对这些数据按冒泡算法进行从大到小排序。程序运行时界面如图91所示,图91,1)(1)设计应用程序界面时,为添加“冒泡排序”按钮,应使用如图92所示的“控件工具箱”中的_(填写相应编号),并在图93所示的“属性”窗口中,将_属性值设置为“冒泡排序,4,Caption,图92,图93,2)从左至右的两个列表框的名称分别是List1和List2,“随机产生15个整数”按钮的名称是Command1,“冒泡排序”按钮的名称是Command2。请根据题意将下列程序补充完整。 Dim a(1 To 15) As Integer Dim n As Integer Private S
11、ub Command1_Click() n 15 Randomize List1.Clear List2.Clear For i 1 To 15 List1.AddItem Str(i) & “:” & Str(a(i) Next i End Sub,Private Sub Command2_Click() Dim t As Integer List2.Clear For i 1 To n 1 For j n To i 1 Step 1 If Then t a(j): a(j) a(j 1): a(j 1) t End If Next j Next i For i 1 To n List2.A
12、ddItem Str(i) & “:” & Str(a(i) Next i End Sub,1)程序中划线处应填入_。 (2)程序中划线处应填入_。 注:该示例程序在素材文件夹下vb23文件夹中,a(i)=Int(Rnd()*1001,a(j)a(j-1,新学年开学安排坐位,需要先根据学生身高排好队。以下VB程序为排队程序,其中变量s为学生总数,数组n存储学生姓名,数组h存储学生身高(单位:厘米)。程序界面如下图所示。程序运行时,自动加载学生姓名与身高数据,点击“排队”按钮,按学生身高从低到高进行排序,实现该功能的程序代码如下: Dim n(1 To 60) As String Dim h(1
13、 To 60) As Integer Const s 60 Private Sub Command1_Click() Dim i As Integer, j As Integer Dim t As Integer Dim k As List1.Clear For i 1 To s 1 For j i 1 To s If Then t h(i): h(i) h(j): h(j) t End If Next j Next i For i 1 To s List1.AddItem n(i) & “:” & Str(h(i) Next i End Sub,Private Sub Form_Load()
14、 学生姓名数据n赋值语句,此处省略 学生身高数据h赋值语句,此处省略 For i 1 To s List1.AddItem n(i) & “:” & Str(h(i)在列表框显示学生姓名与身高原始数据 Next i End Sub 为使程序完整,请在划线处填上合适的语句。 (1)划线处应填入_。 (2)划线处应填入_。 (3)划线处应填入_,String,h(i)h(j,k=n(i):n(i)=n(j):n(j)=k,叶锦平和同学们去农科院开展研究性学习,大家都收获很大,锦平设计了一个VB程序,他把同学们收集到的水稻亩产量和同学姓名已分别保存在数组a和数组b中,第i个同学收集的亩产量保存在a(
15、i)中,对应的同学姓名保存在b(i)中,最后按亩产量从高到低进行排序。 程序界面如图所示,左边列表框List1中显示的是所有同学收集到的原始数据,单击”排序”按钮(Command1)后,在右边的列表框List2中显示排序完成后的结果(按亩产量从高到低排列,解决此问题的算法流程图如图所示,相应的排序部分程序如下: Dim a(1 To n) As Single Dim b(1 To n) As String Private Sub Command1_Click() Dim i As Integer, j As Integer, c As Single, t As String List2.Clear For i 1 To n 1 设共有n名同学 For j If Then c a(j 1) a(j 1) a(j) a(j) c t b(j 1) b(j 1) b(j) b(j) t End If Next j Next i For i 1 To n List2.AddItem Str(a(i) “ ” b(i) Ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川长虹电源股份有限公司招聘电气测试工程师等岗位7人备考题库及答案详解(新)
- 2026年上半年四川雅安中学选调教师4人备考题库及答案详解(基础+提升)
- 2026海南中经报业集团有限公司招聘公益项目运营主管3人备考题库附答案详解(能力提升)
- 2026江苏苏州市常熟市虞山街道招聘3人备考题库参考答案详解
- 2026四川虹信软件股份有限公司招聘采购专员岗位2人备考题库附答案详解(完整版)
- 2026江西赣州市第三人民医院招聘高层次人才5人备考题库及答案详解(真题汇编)
- 2026北京海淀区解放军总医院第三医学中心社会招聘3人备考题库附答案详解(预热题)
- 2026陕西汉中宁强县妇幼保健院招聘24人备考题库含答案详解(培优)
- 2026重庆大学附属中心医院第二季度招聘56人备考题库含答案详解(培优a卷)
- 2026海南琼中黎族苗族自治县总工会招聘公益性岗位人员1人备考题库含答案详解(黄金题型)
- 2026 小红书种草营销考试试题(102题) 含答案
- 2026山东济南市中城市发展集团有限公司社会招聘备考题库及答案详解(新)
- 2026年高考地理三轮复习:10大地理热点考点+模拟试题(含答案)
- 高血压的中医治疗
- 《社会工作法规与政策(中级)》课件全套 第1-18章 社会工作服务相关法规与政策的基本体系与主要功能-特定人群权益保护与服务的法规与政策
- 企业内部员工考试制度
- 西师大版小学二年级数学(下)第二单元 表内除法测试题(含答案)
- 伤口换药技巧
- 2025年广东省继续教育公需课人工智能赋能制造业高质量发展及答案
- 宁波华盛实业总公司招聘笔试题库2026
- 2026年福建省中考语文试题解读及复习备考方法指导
评论
0/150
提交评论