内容正文:
冒泡排序齐体验(2)
冒泡排序齐体验(2)
五年级全一册
行业PPT模板http:///hangye/
人教版
冒泡排序的过程分析
验证冒泡排序的算法
学科网
导 入 新 课
导 入 新 课
上一课我们通过“排队”活动,体验了冒泡排序的算法步骤,那么如何利用程序进行验证与实现呢?
33
45
12
讲 授 新 知
讲 授 新 知
一、冒泡排序的过程分析
任务 1 :把最大数交换到最后。
讲 授 新 知
讲 授 新 知
任务 1 :把最大数交换到最后的操作描述如下。
第1次,65和90比较,左边65小,不交换;
第2次,90和35比较,左边90大,交换;
第3次,90和78比较,左边90大,交换;
第4次,90和85比较,左边90大,交换;
第5次,90和56比较,左边90大,交换。
65
90
35
78
85
56
35
90
78
90
85
90
56
90
讲 授 新 知
讲 授 新 知
利用冒泡排序算法,把最大数排列到最后(最右侧)的算法流程图如图所示。
从左到右依次进行比较,满足当前数>右侧数就进行交换。
讲 授 新 知
讲 授 新 知
任务 2 :按数值从小到大排序。
第一轮:把最大数交换到最后,前面已经完成。
第二轮:返回最左边,在第一个至第五个数中,通过比较、交换找到它们中的最大数,把它排到第五的位置。
讲 授 新 知
讲 授 新 知
第二轮:找出第1-第5个数中的最大值
第1次,65和35比较,左边65大,交换;
第2次,65和78比较,左边65小,不交换;
第3次,78和85比较,左边78小,不交换;
第4次,85和56比较,左边85大,交换;
65
35
78
85
56
90
35
65
65
78
78
85
56
85
讲 授 新 知
讲 授 新 知
第三轮:返回最左边,在第一个至第四个数中,通过比较、交换找到它们中的最大数,把它排到第四的位置。
第1次,35和65比较,左边35小,不交换;
第2次,65和78比较,左边65小,不交换;
第3次,78和56比较,左边78大,交换;
90
35
65
56
85
65
65
78
78
78
56
讲 授 新 知
讲 授 新 知
第四轮:返回最左边,在第一个至第三个数中,通过比较、交换找到它们中的最大数,把它排到第三的位置。
第1次,35和65比较,左边35小,不交换;
第2次,65和56比较,左边65大,交换;
90
35
85
65
78
56
65
56
65
讲 授 新 知
讲 授 新 知
第五轮:返回最左边,比较第一个和第二个数,把较大的数排到第二的位置。
第1次,35和65比较,左边35小,不交换;
90
35
85
78
56
65
56
讲 授 新 知
讲 授 新 知
以下是冒泡排序中多轮比较、交换,把相应最大数排列到指定位置的算法流程图。
比较5轮是一层循环,每轮中把最大数排列到指定位置也是一层循环。
讲 授 新 知
讲 授 新 知
进一步思考,刚刚进行的冒泡排序算法总共比较了多少次?交换了多少次呢?
在这个冒泡排序的例子中,一共有 6 个数,
第 1 轮需要比较6-1=5 次
第 2 轮需要比较 4 次
第 3 轮需要比较 3 次
第 4 轮需要比较 2 次
第 5 轮需要比较 1 次
因此,总的比较次数为 5+4+3+2+1=15 次。
讲 授 新 知
讲 授 新 知
事实上,交换数的次数和数的排列顺序有关。
假设出现某种极端情况,例如,这些数正好以从小到大的顺序排列,那么便不需要任何交换操作;反过来,数据要是以从大到小的顺序排列,那么每次比较数值后就都需要进行交换。
如果某一轮比较后,没有发生交换,说明这些数按照顺序排列好了,循环就可以结束了。
讲 授 新 知
讲 授 新 知
冒泡排序是稳定的原地排序算法,即相同的数据在排序后保持其原有的顺序,编程实现也相对简单。
讲 授 新 知
讲 授 新 知
二、验证冒泡排序的算法
下面通过观察、运行冒泡排序的程序,体会算法的实现。
第 1 步:打开配套资源中的“冒泡排序 .py”程序。
第 2 步:观察、运行这个程序,体验冒泡排序的算法执行过程。
第 3 步:大致了解程序与算法的对应关系。
第 4 步:尝试修改程序中的排序数据,再运行程序,观察变化。
讲 授 新 知
讲 授 新 知
拓 展 与 提 升
拓 展 与 提 升
1. “报数”排序游戏。
在 10 张卡片上分别写下一个 50 以内的自然数,随机分发给 10 位同学,然后选一位同学出来从 1 开始报数。当报的数与某张卡片上的数相同时,该同学就手持卡片站出来。继续报数,直到 50 为止,手持卡片的同学按先后顺序站成一排,这时发现,这 10 个数已经按顺序排列。
用计算机解决排序问题时,也可以用以上“报数”的方法。计算机按顺序数数,当数到的数与参与排序的某个数相同时,这个数就会被加入已排序数的队列中。
拓 展 与 提 升
拓 展 与 提 升
2. 在配套资源中,有用 for 循环实现的冒泡排序参考程序,打开并运行这个程序,观察它与 while 循环的不同之处,体会同一算法用不同程序实现的方法。
在 Python 中,for 循环语句的基本格式如下。
for 变量 in 序列 :
循环体
总 结
总 结
1. 进一步认识冒泡排序算法,能够对一组数据进行排序过程分析。
2. 能够用程序验证排序算法,观察数据的排序过程,培养用算法解决问题的意识。
3.通过分析对数据进行冒泡排序的过程,了解冒泡排序的思想和方法。
谢谢观看
学科网制作
Lavf58.29.100
Packed by Bilibili XCoder v2.0.2
$$冒泡排序。Round two. round. three. round. home. Round pay.