中小学教育资源及组卷应用平台
第五单元 排序与查找
项目八 模拟实现商品排序
——常用排序算法及其比较
第二课时 尝试使用冒泡排序法实现商品销量排序
教材分析
本节的主要内容是尝试使用冒泡排序法实现商品销量排序。以生活中经常需要对某些数据进行查找和排序,如销售统计、商品查找等为主线,整个项目分为尝试使用插入排序法实现商品销量排序、尝试使用 泡排序法实现商品销量排序、尝试使用选择排序法实现商品销量排序、比较三种排序方法四部分。
本课时的学习中,学生将尝试使用冒泡排序方法对模拟的网络购物平台中的店铺销售数据进行排序。在使用冒泡排序中的冒泡排序排序对6件商品销量数据进行排序的过程中,教材先给出了使用顺序存储结构下的排序示意图(部分),然后在活动中要求学生完成剩下的步骤示意图以及链式存储结构下的排序过程描述,并完成算法流程图设计和程序的编写,最后上机运行得出结果。
本课时强调引导学生在理解、掌握三种排序方法的基础上,对它们的基本特点和稳定性进行分析。通过本课时的学习,学生能够掌握基本的排序方法,理解排序算法与数据结构的关系,从而学会根据实际问题选择恰当的算法完成数据的排序。
本节课时将从身边熟悉的事例出发,带领学生探究各种排序和查找算法,在学习过程中体验迭代和递归的方法,并理解算法与数据结构的关系,进一步发展学生的计算思维和数字化学习与创新的能力。
教学目标
1.掌握常用的数据排序方法——冒泡排序;
2.理解三种排序算法的特点。
3.理解排序算法与数据结构的关系。
4.能通过Python编程实现三种排序算法。
5.培养学生的信息意识和计算思维能力。
教学重点
1.掌握常用的数据排序方法;
2.理解排序算法与数据结构的关系。
教学难点
1.理解插入排序算法的特点;
2.培养学生的信息意识和计算思维能力。
教学方法
体验法、讲授法、讨论法、示例法
教学准备
计算机教室、多媒体设备、多媒体广播软件、Python编程环境、待排序的商品数据、教学课件等。
教学过程
一、新课导入
回顾并提出问题:“使用插入排序法有哪些不足”。
引出这节课的内容:冒泡排序法。
二、冒泡排序法
1.核心概念
冒泡排序(Bubble Sort),是一种计算机科学 ( https: / / baike. / item / %E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6 / 9132" \t "https: / / baike. / item / %E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F / _blank )领域的较简单的排序算法 ( https: / / baike. / item / %E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95 / 5399605" \t "https: / / baike. / item / %E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F / _blank )。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
2.算法原理
冒泡排序算法 ( https: / / baike. / item / %E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95 / 5399605" \t "https: / / baike. / item / %E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F / _blank )的原理如下:
①比较相邻的元素。如果第一个比第二个大,就交换他们两个。
②对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
③针对所有的元素重复以上的步骤,除了最后一个。
④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
3.流程图
4.实例
假设待排序序列为 (5,1,4,2,8),如果采用冒泡排序对其进行升序(由小到大)排序,则整个排序过程如下所示:
①第一轮排序,此时整个序列中的元素都位于待排序序列,依次扫描每对相邻的元素,并对顺序不正确的元素对交换位置,整个过程如图 1 所示。
图 1 第一轮排序(白色字体表示参与比较的一对相邻元素)
从图 1 可以看到,经过第一轮冒泡排序,从待排序序列中找出了最大数 8,并将其放到了待排序序列的尾部,并入已排序序列中。
②第二轮排序,此时待排序序列只包含前 4 个元素,依次扫描每对相邻元素,对顺序不正确的元素对交换位置,整个过程如图 2 所示。
图 2 第二轮排序
可以看到,经过第二轮冒泡排序,从待排序序列中找出了最大数 5,并将其放到了待排序序列的尾部,并入已排序序列中。
③第三轮排序,此时待排序序列包含前 3 个元素,依次扫描每对相邻元素,对顺序不正确的元素对交换位置,整个过程如图 3 所示。
图 3 第三轮排序
经过本轮冒泡排序,从待排序序列中找出了最大数 4,并将其放到了待排序序列的尾部,并入已排序序列中。
④第四轮排序,此时待排序序列包含前 2 个元素,对其进行冒泡排序的整个过程如图 4 所示。
图 4 第四轮排序
经过本轮冒泡排序,从待排序序列中找出了最大数 2,并将其放到了待排序序列的尾部,并入已排序序列中。
⑤当进行第五轮冒泡排序时,由于待排序序列中仅剩 1 个元素,无论再进行相邻元素的比较,因此直接将其并入已排序序列中,此时的序列就认定为已排序好的序列(如图 5 所示)。
图 5 冒泡排序好的序列
5.运用Python实现
123456789 def bubble_sort(nums): for i in range(len(nums) - 1): # 这个循环负责设置冒泡排序进行的次数 for j in range(len(nums) - i - 1): # j为列表下标 if nums[j] > nums[j + 1]: nums[j], nums[j + 1] = nums[j + 1], nums[j] return nums print(bubble_sort([45, 32, 8, 33, 12, 22, 19, 97]))# 输出:[8, 12, 19, 22, 32, 33, 45, 97]
三、尝试使用冒泡排序法实现商品销量排序
若采用冒泡排序法,则将这些销量数据看成水里的气泡,数字大小表示气泡的轻重,最先冒出最轻的(最小数)、第二次冒出第二轻的,以此类推,如图5-4所示,图中斜线下是无序的,斜线上是已冒出的有序的。实现冒泡的方法:从序列最后两个元素开始比较,只要后面元素小,则交换交换上去的再与最后第三个元素比较,以此类推,这样两两相邻元素比较就冒出当前最小元素。
图5-4采用数组的冒泡排序过程
思考与讨论?
1.用小的数上冒可以完成排序,那用大的数下沉能完成排序吗?
能。
2.冒泡排序在链式存储结构下的排序过程有何不同?
建议教师引导学生主要从以下两个方面思考。
①若使用单链表,一般从链表首开始,使用大数下沉的方法比较合适。
②链式存储结构中,交换的不是元素的值,而是通过修改指针,改变结点的先后顺序。
四、课堂活动
在以下流程图(局部)框中完成冒泡排序算法(设数据在r数组中,n为元素个数),并编程实现,上机运行测试。
参考答案:
程序:
r=[21,25,49,25,16,8]
i=0
while i<5:
j=5
while j>=1:
if r[j]temp=r[j]
r[j]=r[j-1]
r[j-1]=temp
j=j-1
i=i+1
for e in r:
Print(e)
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
HYPERLINK "http://21世纪教育网(www.21cnjy.com)
" 21世纪教育网(www.21cnjy.com)(共34张PPT)
第二课时 尝试使用冒泡排序法实现商品销量排序
信息技术沪教版 选择性必修1
第五单元 排序与查找
项目八 模拟实现商品排序
——常用排序算法及其比较
一、新课导入
二、冒泡排序法
三、尝试使用冒泡排序法实现商品销量排序
四、课堂活动
一、新课导入
将一组次序任意的数据元素转变为按其关键字(可以标识数据元素的某个数据项的值)递增(或递减)次序排列的过程,称为排序。
1
2
3
插入排序
冒泡排序
选择排序
使用插入排序法有哪些不足?
二、冒泡排序法
5.Python实现
3.流程图
4.实例
2.算法原理
1.核心概念
1.核心概念
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
1.核心概念
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
5.Python实现
3.流程图
4.实例
2.算法原理
1.核心概念
2.算法原理
冒泡排序算法的原理
2.算法原理
冒泡排序算法的原理如下:
①比较相邻的元素。如果第一个比第二个大,就交换他们两个。
②对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
③针对所有的元素重复以上的步骤,除了最后一个。
④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
5.Python实现
3.流程图
4.实例
2.算法原理
1.核心概念
3.流程图
冒泡排序算法的流程图
3.流程图
5.Python实现
3.流程图
4.实例
2.算法原理
1.核心概念
4.实例
假设待排序序列为 (5,1,4,2,8),如果采用冒泡排序对其进行升序(由小到大)排序,则整个排序过程如下所示:
①第一轮排序,此时整个序列中的元素都位于待排序序列,依次扫描每对相邻的元素,并对顺序不正确的元素对交换位置,整个过程如图 1 所示。
从上图可以看到,经过第一轮冒泡排序,从待排序序列中找出了最大数 8,并将其放到了待排序序列的尾部,并入已排序序列中。
②第二轮排序,此时待排序序列只包含前 4 个元素,依次扫描每对相邻元素,对顺序不正确的元素对交换位置,整个过程如图 2 所示。
经过第二轮冒泡排序,从待排序序列中找出了最大数 5,并将其放到了待排序序列的尾部,并入已排序序列中。
③第三轮排序,此时待排序序列包含前 3 个元素,依次扫描每对相邻元素,对顺序不正确的元素对交换位置,整个过程如图 3 所示。
经过本轮冒泡排序,从待排序序列中找出了最大数 4,并将其放到了待排序序列的尾部,并入已排序序列中。
④第四轮排序,此时待排序序列包含前 2 个元素,对其进行冒泡排序的整个过程如图 4 所示。
经过本轮冒泡排序,从待排序序列中找出了最大数 2,并将其放到了待排序序列的尾部,并入已排序序列中。
⑤当进行第五轮冒泡排序时,由于待排序序列中仅剩 1 个元素,无论再进行相邻元素的比较,因此直接将其并入已排序序列中,此时的序列就认定为已排序好的序列(如图 5 所示)。
5.Python实现
3.流程图
4.实例
2.算法原理
1.核心概念
5.运用Python实现
运用Python编程,调试,运行。
5.运用Python实现
def bubble_sort(nums):
for i in range(len(nums) - 1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(nums) - i - 1): # j为列表下标
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
print(bubble_sort([45, 32, 8, 33, 12, 22, 19, 97]))
# 输出:[8, 12, 19, 22, 32, 33, 45, 97]
三、尝试使用冒泡排序法实现商品销量排序
若采用冒泡排序法,则将这些销量数据看成水里的气泡,数字大小表示气泡的轻重,最先冒出最轻的(最小数)、第二次冒出第二轻的,以此类推,如图5-4所示,图中斜线下是无序的,斜线上是已冒出的有序的。实现冒泡的方法:从序列最后两个元素开始比较,只要后面元素小,则交换交换上去的再与最后第三个元素比较,以此类推,这样两两相邻元素比较就冒出当前最小元素。
思考与讨论
1.用小的数上冒可以完成排序,那用大的数下沉能完成排序吗?
思考与讨论
1.用小的数上冒可以完成排序,那用大的数下沉能完成排序吗?
能
思考与讨论
2.冒泡排序在链式存储结构下的排序过程有何不同?
思考与讨论
2.冒泡排序在链式存储结构下的排序过程有何不同?
①若使用单链表,一般从链表首开始,使用大数下沉的方法比较合适。
思考与讨论
2.冒泡排序在链式存储结构下的排序过程有何不同?
②链式存储结构中,交换的不是元素的值,而是通过修改指针,改变结点的先后顺序。
四、课堂活动
在右流程图(局部)框中完成冒泡排序算法(设数据在r数组中,n为元素个数),并编程实现,上机运行测试。
参考答案:
参考答案:
程序:
r=[21,25,49,25,16,8]
i=0
while i<5:
j=5
while j>=1:
if r[j]temp=r[j]
r[j]=r[j-1]
r[j-1]=temp
j=j-1
i=i+1
for e in r:
Print(e)
谢谢
21世纪教育网(www.21cnjy.com) 中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php