浙教版信息技术选修1 5.3 排序算法的程序实现——冒泡排序 课件(15张ppt)+教案

文档属性

名称 浙教版信息技术选修1 5.3 排序算法的程序实现——冒泡排序 课件(15张ppt)+教案
格式 zip
文件大小 1.5MB
资源类型 教案
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2021-01-12 15:49:31

文档简介

冒泡排序教学设计
【教学目标】
知识目标:掌握冒泡排序的原理;理解冒泡排序的流程图;编写冒泡排序的主要代码;
能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,体会程序设计在现实中的作用;
情感目标:培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的程序书写习惯;
【重点难点 】           
重点:理解冒泡排序原理及它的流程图
难点:理解冒泡排序中的遍、次等概念(即对变量使用的理解)
【教学策略与手段】
采用讲解法、演示法、分析归纳法引导学生参与思考,用逐步求精的方式降低学生的理解难度,化抽象为具体,由特殊到一般,有效地突出重点突破难点。
【课前准备】
1.教师的教学准备:冒泡排序的课件
2.教学环境的设计与布置:多媒体网络教室、投影机、多媒体教学平台
【教学过程】
一、课前:复习导入
二、新课引入
1、冒泡排序。
2、呈现冒泡排序思路。
3、完整例子讲解冒泡排序的进程。
(1)先让学生思考如何将第一个最小数放在第一位
引出趟数的概念后,讲解剩下所有数据的冒泡过程。
从5个数据通过冒泡排序需要的趟数引申出n个数进行冒泡排序要n-1趟排序
4、练习加深对冒泡排序过程的认识。
5、做完后再思考n个数进行冒泡排序最多需要同进行多少次比较。
课后练习:区分比交次数与交接次数的不同
三、程序升华
1、思考有两个数据,如何将较小的数据放前面?
2、如何将刚才思路用程序体现?
3、如果一个数组d有5个元素(数据垂直排放,值如下)
要求将它们中的最小一个数放到第一个位置,该如何写程序?
思考:具体每次是哪两个数据在比较后交换?
4、要如何将这个数组d的5个元素从小到大排列?。
5、引进趟数,简化程序
6、总结结构思路
四、课堂小结
(1)冒泡排序是一个双重循环
,一共循环了多少次
(2)
冒泡排序总冒泡次数?
4(共15张PPT)
冒泡排序
PaixuSuanfa
冒泡排序
把存放在数组中的一组杂乱无章的数据变为一组按一定顺序(从小到大或从大到小)排列的数据就是排序(sort)
冒泡排序思想(概括):
什么是排序?
在一列数据中把较小的数据逐次向上推移的一种排序技术
冒泡排序
冒泡排序是把待排序的n个元素的数组看成垂直堆放的一列数据,从最下面的一个元素起,自下而上地比较相邻的两个元素中的数据,将较小的数据换到上面的一个元素中。重复这一过程,直到处理完最后两个元素中的数据,称为一遍加工,当第一遍加工完成时,最小的数据已经上升到第一个无素的位置,然后对余下的n-1个元素重复上述处理过程,直至最后进行余下两个数据的比较和交换。
冒泡排序思想(详细):
7
3
4
8
1
d
1
2
3
4
5
下标
请再来思考一下:
7
3
4
1
8
1
2
3
4
5
7
3
4
8
1
1
2
3
4
5
1
2
3
4
5
7
1
3
4
8
7
3
1
4
8
1
2
3
4
5
1
2
3
4
5
1
7
3
4
8
如何运用冒泡将第一个最小的数放到第一个位置?
第一趟排序:
将最小数放至第一个位
  要如何将下列数组d的5个元素从小到大排列?。
5数排序过程:
1
3
7
4
8
1
2
3
4
5
1
2
3
4
5
1
3
4
7
8
1
2
3
4
5
1
3
7
4
8
1
3
4
7
8
1
2
3
4
5
1
2
3
4
5
1
3
4
7
8
7
3
4
8
1
1
2
3
4
5
7
3
4
1
8
1
2
3
4
5
7
3
1
4
8
1
2
3
4
5
1
2
3
4
5
7
1
3
4
8
1
2
3
4
5
1
7
3
4
8
最后一个数据放在第1
(第1趟)
最后一个数据放在第2
(第2趟)
最后一个数据放在第3
(第3趟)
最后一个数据放在第4
(第4趟)
1
7
3
4
8
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
3
7
4
8
1
2
3
4
5
1
7
3
4
8
1
7
3
4
8
n个数进行冒泡排序要n-1趟排序
P32例1:
若用冒泡排序对数据70,53,57,28,30,77,1进行排序,排序过程如图所示,则第二趟加工后的结果是(

原始数据
70
53
57
28
30
77
1
第一遍加工后
1
70
53
57
28
30
77
第二遍加工后
第三遍加工后
1
28
30
70
53
57
77








B
P32例1:
对7个数据用冒泡排序升序排序,第一遍加工后的结果如图所示,原始数据可能是(

原始数据
第一遍加工后
1
70
53
57
28
30
77








A.1,70,53,57,77,28,30
B.70,1,53,57,28,30,77
C.70,53.57.28.30,77,1
D.70,53,1,57,28,30,77
C
1
,28,70,53,57,77,30
1
,70,28,53,57,30,77
1
,70,53,28,57,30,77
思考:
第一遍:总共n个数,需要比较n-1
第二遍:总共n-1个数,需要比较n-2
第三遍:总共n-3个数,需要比较n-3
最后一遍即第n-1遍:
总共2个数,需要比较1

次数=(n-1)+(n-2)+(n-3)+…+2+1
=n(n-1)/2
  
n个数进行冒泡排序最多需要同进行多少次比较。
比较P34
4
交换P34
5
7
3
4
8
1
1
2
3
4
5
思考:
A
  
3+2
P254
2:对下列数据序列进行冒泡升序排序,在排序过程中效率最低的序列是(

A.31,29,24,20,15,10
B.10,15,20,24,29,31
C.29,10,31,15,20,24
D.24,29,31,20,15,10
方法:若后面的数<前面的数,两者交换位置
有两个数据,如何将较小的数据放前面?
用p(i)表示后面的数据,前一个数据则可以表示成
If
then
‘判断p(i)是否小于p(i-1)
‘将两个数据相互交换
End
if
P(i)k=p(i)
:
p(i)=p(i-1)
:
p(i-1)=k
P(i-1)
3
4
4
3
程序实现
程序实现:p(i)与P(i-1)交换数据
7
3
4
8
1
d
1
2
3
4
5
下标
  如果一个数组d有5个元素(数据垂直排放,值如下)
要求将它们中的最小一个数放到第一个位置,该如何写程序?。
请再来思考一下:
7
3
4
1
8
1
2
3
4
5
7
3
4
8
1
1
2
3
4
5
1
2
3
4
5
7
1
3
4
8
7
3
1
4
8
1
2
3
4
5
1
2
3
4
5
1
7
3
4
8
如何写程序?
7
3
4
1
8
1
2
3
4
5
7
3
4
8
1
1
2
3
4
5
1
2
3
4
5
7
1
3
4
8
7
3
1
4
8
1
2
3
4
5
1
2
3
4
5
1
7
3
4
8
思考:具体每次是哪两个数据在比较后交换?
d(5)
VS
d(4)
d(4)
VS
d(3)
d(4)
VS
d(2)
d(2)
VS
d(1)
用d(i)表示后一数,前一数则应表示成
d(i-1)
程序实现:d(i)与d(i-1)交换数据
‘判断d(i)是否小于d(i-1)
‘将两个数据相互交换
d(i)k=d(i)
:
d(i)=d(i-1)
:
d(i-1)=k
‘设定i的起始和终止范围
End
if
If
then
循环多次
For
i=
to
Next
5
2
后一数
VS
前一数
Step
-1
  要如何将这个数组d的5个元素从小到大排列?。
提升要求:
1
3
7
4
8
1
2
3
4
5
1
2
3
4
5
1
3
4
7
8
1
2
3
4
5
1
3
7
4
8
1
3
4
7
8
1
2
3
4
5
1
2
3
4
5
1
3
4
7
8
7
3
4
8
1
1
2
3
4
5
7
3
4
1
8
1
2
3
4
5
7
3
1
4
8
1
2
3
4
5
1
2
3
4
5
7
1
3
4
8
1
2
3
4
5
1
7
3
4
8
最后一个数据放在第1
最后一个数据放在第2
最后一个数据放在第3
最后一个数据放在第4
1
7
3
4
8
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
3
7
4
8
1
2
3
4
5
1
7
3
4
8
1
7
3
4
8
请写出接下来所有的过程!
请用程序将每次过程实现!
For
j=5
to
2
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
j=5
to
3
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
j=5
to
4
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
j=5
to
5
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
简化程序:
5个数据排序需要经过几遍才能完成?
For
j=5
to
2
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
j=5
to
3
step-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
j=5
to
4
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
j=5
to
5
step
-1
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
For
i
=
to
Next
For
j=
to
.
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
1
‘i表示需要经过的遍数
‘每遍比较互换过程
4
5
i+1
4遍
n个数据排序需要经过几遍才能完成?
n-1遍
n-1
n
Step-1
第1趟
第2趟
第3趟
第4趟
简化程序:
5个数据排序需要经过几遍才能完成?
For
i
=
to
Next
For
j=
to
.
If
d(j)
then
k=d(j):d(j)=d(j-1):d(j-1)=k
End
if
Next
1
‘i表示需要经过的遍数
‘每遍比较互换过程
4
5
i+1
4遍
n个数据排序需要经过几遍才能完成?
n-1遍
n-1
n
(每趟从后往前比较)
常用的冒泡排序程序的一般结构:
让i从1到n-1
循环
让j从
n到i+1循环
若a(j)与a(j-1)逆序,则交换
a(j)与a(j-1)的值(冒泡一次)
循环尾
循环尾
Step-1