ImageVerifierCode 换一换
格式:PPTX , 页数:30 ,大小:419.22KB ,
资源ID:297395      下载积分:4 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.ketangku.com/wenku/file-297395-down.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(5-3 排序算法的程序实现(冒泡排序 )课件-2022届高三信息技术一轮复习浙教版选修1.pptx)为本站会员(高****)主动上传,免费在线备课命题出卷组卷网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知免费在线备课命题出卷组卷网(发送邮件至service@ketangku.com或直接QQ联系客服),我们立即给予删除!

5-3 排序算法的程序实现(冒泡排序 )课件-2022届高三信息技术一轮复习浙教版选修1.pptx

1、冒泡排序专题复习冒泡排序的思想从最下面一个元素起,依次比较相邻的两个元素中的数据,将较小的数据调换到上面,小元素像气泡一样上浮。如何实现将较小数逐次从下向上推移呢?冒泡排序的过程12345设置数组变量:a(i)为牌的值(i=1、2、3、4、5)第一轮冒泡12345a(5)a(4),不交换 a(4)a(3),交换 a(3)a(2),交换 a(2)a(4),不交换 a(4)a(3),不交换 a(3)a(4),交换 a(4)a(3),不换 第四轮冒泡12345a(5)a(4),交换 分析与总结如果要对有5个元素的数组进行排序,那么 1、要进行_轮冒泡 2、第一轮冒泡,比较的范围从 到 ;第二轮冒泡,

2、比较的范围从 到 ;第三轮冒泡,比较的范围从 到 ;第四轮冒泡,比较的范围从 到 。3、总比较次数 次,数据最多交换 次。4 a(5)与a(4)a(2)与a(1)a(5)与a(4)a(5)与a(4)a(5)与a(4)a(3)与a(2)a(4)与a(3)a(5)与a(4)10 10 提高如果要对有n个元素的数组进行排序,那么 1、要进行_轮冒泡 2、第一轮冒泡,比较的范围从 到 ;第二轮冒泡,比较的范围从 到 ;第三轮冒泡,比较的范围从 到 ;第n-1轮冒泡,比较的范围从 到 。3、总比较次数 次,数据最多交换 次。a(2)与a(1)a(3)与a(2)n-1 a(n)与a(n-1)a(n)与a(

3、n-1)a(n)与a(n-1)a(n)与a(n-1)a(n)与a(n-1)a(4)与a(3)n(n-1)/2 n(n-1)/2 冒泡排序程序实现For i=1 to n-1 For j=n to i+1 step-1 If a(j)a(j-1)思考:若从前往后实现大值“下沉”,程序如何修改?For i=1 To n-1 For j=If a(j)a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t End If Next j Next i 2 to n-i+1 思考:若从前往后实现大值“下沉”,程序如何修改?For i=n To 2 step-1 For j=If a(

4、j)a(j+1)Then t=a(j):a(j)=a(j+1):a(j+1)=t End If Next j Next i n-1 To i Step-1 思考:若只需要寻找数组中最大的三个数,程序如何修改?For i=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 List1.AddItem Str(a(i)Next i a(j)a(j-1)1 to 3a(j-1)a(j)思考:若只需要将数组x到y位置的元素进行排序(1=x=y=n),程序如何修改?(考虑排序不同方向)For i=1 to y-x

5、 For j=x+1 to y-i+1 If a(j)a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t End If Next j Next i y to x+i step-1 2.有如下VB程序段:For i=1 To 2 For j=5 To i+1 Step-1 If a(j)a(j-1)10 Then t=a(j):a(j)=a(j-1):a(j-1)=t End If Next j Next i 执行完该程序段后,下列选项中,a(1)到a(6)各元素的值可能是 A.84,98,93,84,62,30 B.70,60,10,28,18,14 C.34,44,

6、36,14,16,94 D.77,42,34,16,24,82 C总结IF语句条件表达式即为排序的条件,按照什么内容(关键字)排序,排成什么状态(升序或者降序)。内层循环:循环变量范围控制参与排序元素的范围,全部参与还是部分参与,步长控制数据比较的方向,前面先有序还是后面先有序。外层循环:循环变量范围控制冒泡的个数,完全冒泡还是部分冒泡。程序优化:n个数不一定需要冒n-1个泡才完全有序,比如数组“3,5,7,9,11,2”冒一个泡后就实现了完全有序。如何实现一旦发现数组数据已经有序程序就不再进行排序,从而提高程序效率?思考:如何判断一个数组数据已经有序了?flag=False:i=1 Do W

7、hile in and flag=False flag=True For j=n To i+1 Step-1 If a(j)a(j-1)Then t=a(j)a(j)=a(j-1)a(j-1)=t flag=False End If Next j i=i+1 Loop 某一轮冒泡过程没有发生数据交换,则说明数组有序4.有以下VB程序:flag=True:i=1:n=6 Do While i=n-1 and flag=True flag=False For j=n To i+1 Step-1 If a(j)a(j-1)Then t=a(j)a(j)=a(j-1)a(j-1)=t flag=Tru

8、e End If Next j i=i+1 Loop 有一数组a(1 to 6),其数值分别为“45,39,78,37,93,64”,想要按照从小到大排序,执行完该程序段后,数据总比较次数和总交换次数分别是 A.9次和4次 B.9次和6次 C.12次和6次 D.15次和12次 C程序变式一:数组a(1 to 8)10 5 8 6 9 4 15 9 原序列:数组a(1 to 8)4 5 6 8 9 9 10 15 排序后:For i=1 To n 2 For j=n-i+1 To i+1 Step-1 If a(j)a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t N

9、ext j For j=i+2 To n-i+1 Step 1 If a(j)a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t Next j Next i 变式扩展:数组a(1 to 8)10 5 8 6 9 4 15 9 原序列:数组a(1 to 8)4 5 6 8 9 9 10 15 排序后:For i=1 To n 2 For j=i+1 To n i+1 Step 1 If a(j)a(j-1)Then t=a(j):a(j)=a(j-1):a(j-1)=t Next j For j=n-i To i+1 Step-1 If a(j)a(j-1)Then t

10、=a(j):a(j)=a(j-1):a(j-1)=t Next j Next i 变式扩展:数组a(1 to 8)10 5 8 6 9 4 15 9 原序列:数组a(1 to 8)4 6 9 10 15 9 8 5 排序后:For i=1 To n 2 For j=n-i+1 To i+1 Step-1 If a(j)a(j)Then t=a(j):a(j)=a(j+1):a(j+1)=t Next j Next i 程序变式二:数组a(1 to 8)10 5 8 6 9 4 15 9 原序列:数组a(1 to 8)4 15 5 10 6 9 8 9 排序后:k=1 For i=1 To n-

11、1 For j=n To i+1 Step-1 If a(j)*k a(j-1)*k Then t=a(j):a(j)=a(j-1):a(j-1)=t End If Next j k=-k Next i 程序变式三:数组a(1 to 8)10 5 8 6 9 4 15 9 原序列:数组a(1 to 8)8 4 9 5 10 6 15 9 排序后:For i=1 To(n 1)2 For j=1 To n-2*i If a(j)a(j+2)Then t=a(j):a(j)=a(j+2):a(j+2)=t End If Next j Next i 变式扩展:数组a(1 to 8)10 5 8 6

12、9 4 15 9 原序列:数组a(1 to 8)15 4 10 5 9 6 8 9 排序后:k=1 For i=1 To(n-1)2 For j=1 To n-2*i If a(j)*k a(j+2)*k Then t=a(j):a(j)=a(j+2):a(j+2)=t End If k=-k Next j Next i 5.有如下VB程序段:k=1 For i=1 To 2 For j=1 To 6-2*i If k*a(j)k*a(j+2)Then t=a(j):a(j)=a(j+2):a(j)=t End If k=-k Next j Next i 数组元素a(1 to 6)的初始 数值分别为“15,11,58,38,26,9”,执行完该程序段后,数据a元素的值分别是 A.58,9,26,11,15,38 B.58,38,26,11,15,9 C.15,38,26,11,58,9 D.58,38,26,15,11,9 A

网站客服QQ:123456
免费在线备课命题出卷组卷网版权所有
经营许可证编号:京ICP备12026657号-3