5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1

2025-10-30
| 41页
| 721人阅读
| 5人下载
精品

资源信息

学段 高中
学科 信息技术
教材版本 高中信息技术浙教版选修1 数据与数据结构
年级 高二
章节 5.3 数据排序
类型 课件
知识点 -
使用场景 同步教学-新授课
学年 2025-2026
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 PPTX
文件大小 8.65 MB
发布时间 2025-10-30
更新时间 2024-11-25
作者 wuhao1987
品牌系列 上好课·上好课
审核时间 2024-11-25
下载链接 https://m.zxxk.com/soft/48911217.html
价格 4.00储值(1储值=1元)
来源 学科网

内容正文:

第3节 数据排序(2课时) 第5章 数据结构与算法 浙教版(2019) 选修一 排序 01 常见的排序算法 02 排序算法的应用 03 学习目录 了解排序的主要作用,掌握排序的基本概念,知道常用的排序算法。 01 能够完整地进行抽象与建模、设计算法与数据结构、程序实现,解决排序算法的应用问题。 03 熟练掌握冒泡排序的基本思想和基本程序结构,并能够编程实现冒泡排序。 02 学习目标 PART 01 排序 新课导入 看 看 一 新课导入 想 想 一 上图中都是生活中常见的一些排队或者可以说是排序。 我们在日常生活中会经常经历排序的场景,比如体育课上按身高排列等等熟悉的生活体验。这种熟悉的经验,在计算机中的排序又有哪些? 问题: 新课导入 同学们对于电脑并不陌生,在计算机软件系统中,排序是一种常见的操作。 如文件夹中图片文件可分别按名称、大小、类型、修改日期等方式进行排序;电子邮件列表一般按照日期排序,最新的邮件被放置在最顶端;购物网站上搜索到的某类商品可按价格、销量、信用等方式进行排序。 什么是排序? 排序 一 概念 将无序数据按照某种规则(递增或递减),重新排列使其变成有序数据。 (元素的入 对一次具体排序而言,总是针对某一组数据元素的某种具体的序关系进行操作。 通过关键字之间的比较判断,将数据移到合适的位置 对链表进行排序无须移动数据,只需修改指针即可 未排序数据的存储方式 以数组作为存储结构 以链表作为存储结构 排序 一 计算机要对数据排序,先要考虑数据的组织形式。如果有一组数(23,20,13,18,14,11)分别存储以数组、链表的形式,排序有什么不同呢? 数据存储情况 排序 一 为了分析问题方便,我们以后假设数据以数组形式存储,然后讨论它的排序算法。排序的基本要求是什么? (元素的入 以数组为例,每个数组元素都对应存储一个数据。 例如,存储在数组元素d[0]中的数据是23,d[1]中存储的是20,等等。 如果对数组d中的6个数据按升序进行排序,即调整数组d中所有数据的存储位置,使最小的数据存储在d[0]中,次小的数据存储在d[1]中……最大的数据存储在d[5]中。数组d中的所有数据满足:d[0]≤d[1]≤d[2]≤d[3]≤d[4]≤d[5]。这里两个数组元素的比较:d[i]≤d[j] (i=0,1,…,5; j=0,1,…,5),指的是d[i]中的数据小于或等于d[j]中的数据。 对数组d按升序进行排序后,数据的存储情况如下图所示: 排序后的数据存储情况 排序 一 总结 排序(sorting)就是整理数据的序列,使其中元素按照某个值的递增(或递减)的次序重新排列的操作。在排序的过程中,序列里的数据元素的值保持不变,但其排列顺序可能改变。 排序 一 只需知道数据之间相互链接的顺序 探讨与讨论 一 对“842715”中的数字进行选择排序中的两遍“加工”即为某密码锁 的密码,则该密码可能是( ) A.842715 B.142785 C.872415 D.124578 C 排序 一 只需知道数据之间相互链接的顺序 探讨与讨论 二 对下列一组原始数组:13,15,2,11,8,18进行选择排序,第一趟排序介绍,数组的状态不可能是( ) A.2,15,13,11,8,18 B.18,15,2,11,8,13 C.13,15,2,11,18,8 D.13,15,18,11,8,2 C PART 02 常见的排序算法 常见的排序算法 二 拓展链接 Python中,对列表进行排序的方法有两种:一种是列表自带的sort方法,只适用于列表,直接对列表进行排序,不会产生新的序列;另外一种是内建函数sorted方法,返回一个新的序列,而原来的序列依然存在。两者的使用方法如右表所示: >>> a=[5,7,6,3,4,1,2] >>> b=sorted(a) >>> print(a) [5, 7, 6, 3, 4, 1, 2] >>> print(b) [1, 2, 3, 4, 5, 6, 7] >>>a.sort() >>> print(a) [1, 2, 3, 4, 5, 6, 7] >>>a.sort(reverse=True) #reverse=True实现降序排序 >>> print(a) [7, 6, 5, 4, 3, 2, 1] Python中的排序函数 常见的排序算法 二 在一次电视节目上,谷歌总裁施密特提出问题:“如何才能更有效地对一百万个32位长整数进行排序?”同在现场的奥巴马总统立刻响应道:“肯定不能用冒泡排序法。”施密特评价说:"天哪!他是从谁那里听说这个的。” 这里奥巴马总统提到的“冒泡排序”,它是如何进行的呢? 常见的排序算法 二 冒泡排序(Bubble Sort)是在一系列数据中对相邻两个数依次进行比较和调整,让较大的数“下沉(上冒)”,较小的数“上冒(下沉)”的一种排序技术。 常见的排序算法 二 以升序为例 第一遍 加工 冒泡排序算法把待排序的n个元素的数组看成是垂直堆放的一列数据,对相邻两个数进行比较,将较小的数据换到上面的一个元素中(或将较大的数据换到下面的一个元素中)。重复这一过程,直到处理完最后两个元素中的数据,称为一遍加工。 当第一遍加工完成时,数 据 结 构与算法最小的数据已经“上浮”到第一个元素的位置(或最大的数据“下沉”到最后一个元素的位置)。然后对余下的n–1个元素重复上述处理过程,直至最后进行余下两个数据的比较和交换。由于每一遍加工都是将本遍最小的元素像气泡一样“上浮”至本遍的顶端位置(或将本遍最大的元素“下沉”至本遍的底端位置),故称为冒泡排序。 常见的排序算法 二 第一遍加工完毕,最大值23“下沉”至数组最后一个元素的位置。即第一遍加工,先比较相邻两元素d[0]与d[1],不符合所要求的顺序,则交换两者的位置;再比较调整d[1]与d[2]……最后比较调整d[4]与d[5]。 冒泡排序算法对数组d的第一遍加工过程 常见的排序算法 二 13 20 18 14 11 23 13 18 20 14 11 23 13 18 14 20 11 23 13 18 14 11 20 23 20 13 18 14 11 23 d[0] d[1] d[2] d[3] d[4] d[5] 第二遍加工 初始值 第二轮排序时,只排到导数第二个...以此排完。 常见的排序算法 二 若要排序的数有n个,则需要n–1遍加工。第i遍加工中,从第一个数开始,相邻两数比较,若反序则交换两者的位置,直到第n+1–i个数为止。第一个数与第二个数比较,第二个数与第三个数比较……第n–i个与第n+1–i个比较,共比较n–i次。此时第n+1–i个位置上的数已经按要求排好,所以不参加以后的比较和交换操作。 对n个元素的数组,用冒泡排序算法进行排序时,共需比较: (n–1)+(n–2)+…+1= (次) 其时间复杂度为〇(n 2 )。 常见的排序算法 二 记录正进行的处理遍数,第1遍处理时值为1,第2遍处理时值为2,以此类推。 记录当前数组元素的下标。每遍处理过程中,j值总是从第一个数组元素的下标值0开始,按每次加1的方式,直至j=n–i–1为止。每当j取定一个值后,当前数组元素d[j]将与它的后一个元素d[j+1]进行比较,若d[j] >d[j+1],则互换这两个数组元素中的数据。 排序过程中,按右面的方式使用变量i和j 变量i 变量j 常见的排序算法 二 冒泡排序算法对数组d的5遍加工过程 常见的排序算法 二 对规模为n的数组d,冒泡排序的算法流程图如右图所示。 冒泡排序的算法流程图 常见的排序算法 二 代码实现: def bubble_sort(d): length=len(d) #序列长度为length,需要执行length–1遍加工 for i in range(1,length): for j in range(0,length–i): if d[j]>d[j+1]: temp=d[j] d[j]=d[j+1] d[j+1]=temp 常见的排序算法 二 (元素的入 在选取排序算法时,可以根据待排序数据自身的特点来选择相应的算法。 时间 复杂度 空间 复杂度 稳定性 常见的排序算法 二 只需知道数据之间相互链接的顺序 探讨与讨论 一 某场篮球联赛中,有5个班级的比赛积分依次为14,11,13,8,9。若 采用冒泡排序算法从右到左对其进行升序排序,则第二轮排序后的结果是 ( ) A.8,11,13,14,9 B.8,9,13,14,11 C.8,9,14,11,13 D. 14,13,11,9,8 C 常见的排序算法 二 只需知道数据之间相互链接的顺序 探讨与讨论 二 某 Python程序如下: a=[3,1,9,7,6,3] n=len(a) for i in range(1,n): for j in range(n-2,i-2,- 1): if a[jka[j+1]: a[j],a[j+1]=a[j+1],a[j] 程序运行后,数组a的值是( ) A.[9,3,1,7,6,3] B.[9,7,6,3,3,1] C.[1,3,3,9,7,6] D.[1,3,3,6,7,9] B PART 03 排序算法的应用 排序算法的应用 三 同学们,这本书和字典你们都认识吗?都使用过,你们在使用字典或翻书的时候,都是按照其中的顺序进行查找的。 排序能使数据有序,而有序的数据更加便于使用。 排序算法的应用 三 排序算法在实际生活中的应用 奥运成绩排行榜 每届奥运会各大媒体都会公布一个成绩排行榜,但每个排行榜可能略有不同,如有的是按金牌总数排列的“金牌榜”,有的是按奖牌总数排列的“奖牌榜”,甚至还有“国民人均奖牌榜”,等等。现在,以2008年北京奥运会的奖牌数为例,部分数据(数据统计时间为2008年8月25日)。请你编写一个程序,编制金牌排行榜。 排序算法的应用 三 编号 国家/地区 人口数量(万) 金牌(枚) 银牌(枚) 铜牌(枚) 总数(枚) 8 中国 136407 51 21 28 100 20 印度 130420 1 0 2 3 53 美国 32262 36 38 36 110 21 印度尼西亚 26110 1 1 3 5 13 巴西 20529 3 4 8 15 23 尼日利亚 18231 0 1 3 4 52 俄罗斯 14253 23 21 28 72 6 日本 12703 9 6 10 25 2008年北京奥运会奖牌数表 排序算法的应用 三 抽象与建模 从表中的数据可以看出,每个国家的信息是一条记录,包括编号、国家/地区、人口数量、各奖牌数等数据项。编制金牌排行榜,要按排序关键字“金牌”降序排序。排序过程中若要交换,则要将待交换的两条记录整 体进行交换。 排序算法的应用 三 设计算法与数据结构 1 第一种方案: 采用7个一维数组按列存储,即每个数组分别存储每个国家的编号、国家/地区、人口数量、各奖牌数等,如定义b数组存储表中8个国家的金牌数量,其对应的值为[51,1,36,1,3,0,23,9] ; 2 第二种方案: 采用1个一维数组按行存储,每个数组元素对应某个国家的一条记录信息,如[8,"中国",136407,51,21,28,100]对应中国的相关信息。 排序算法的应用 三 采用不同的存储方式,排序时数据的交换方式也有不同: 01 若采用7个一维数组按列存储,排序过程中,两条记录的对应数据项都要相应交换,即要考虑7个一维数组的操作。 02 若采用1个一维数组按行存储,排序中的数据交换可对整条记录进行交换操作。 排序算法的应用 三 编写程序 若存储结构采用1个一维数组,以金牌数为关键字进行降序排序,程序如右: import csv #数据读入 csvFile=open("jp.csv", "r") #打开相应数据文件 reader=csv.reader(csvFile) #建立一个读入数据的对象 a=[] for item in reader: a.append(item) csvFile.close() #排序 for i in range(1,len(a)–1): #排序不包含第一行数据 for j in range(1,len(a)–i): if int(a[j][3])<int(a[j+1][3]): temp=a[j] a[j]=a[j+1] a[j+1]=temp #数据写入 csvFile2=open('jp2.csv','w', newline='') writer=csv.writer(csvFile2, dialect='excel') m=len(a) for i in range(m): writer.writerow(a[i]) csvFile2.close() 程序中的“a[j][3]”表示某条记录索引位置为3的信息,即某个国家的金牌数。而“a[j]=a[j+1]”表示整条记录的所有信息的赋值。 排序算法的应用 三 只需知道数据之间相互链接的顺序 探讨与讨论 一 有如下Python 程序段: A=[15,20,11,6,12,8,7,3] for i in range(1,3): for j in range(0,8-i): if a[j]>a[j+1]: a[j],a[j+1]=a[j+1],a[j] 程序段运行后,数组a中的数据依次为( ) A.3,6,7.8.11.12.15,20 B15,11.6,12,8,7.3,20 C.11,6,12,8.7,3,15,20 D.6,11,8.7.3.12.15.20 C 课堂小练 四 1.采用冒泡排序算法对数据序列“7,3,8,2,1,9”进行排序,第一轮排序后的结果为“3,7,2,1,8,9”则完成整个排序需要交换的次数是( ) A.6次 B.7次 C.8次 D.9次 2.在某篮球赛季中,明星队6场比赛得分依次为103,77,95,71,68,89,若采用冒泡排序算法对其进行排序,第一轮排序结果是68,103,77,95,71,89.则第三轮排序中共进行 次数据交换。 C 1 课堂小练 四 只需知道数据之间相互链接的顺序 探讨与讨论 三 有如下 python 程序段: n=6 a = [] for i in range(3): for j in range(n - i - 1): if a[j]>a[j+1]: a[j],a[j+1]=a[j+1],a[j] print(a) 数组元素a(1)到a(6)的数据依次为“50,31,18,42,37,23”,则此程序运行完成后数组元素的数据依次是(   ) A. 50,42,37,31,23,18 B. 18,23,31,50,37,42 C. 18,31,23,37,42,50 D. 18,23,31,37,42,50 C 小结 四 数据排序 小 结 一、排序 1.概念 2.存储方式 数组、链表 二、常见的排序算法 1.拓展链接:Python中的排序函数 列表自带的sort方法、内建函数sorted方法 2.冒泡排序 冒泡排序是在一系列数据中对相邻两个数依次进行比较和调整,让较大的数“下沉(上冒)”,较小的数“上冒(下沉)”的一种排序技术。 三、排序算法的应用 谢谢观看 第3节 数据排序 浙教版(2019) 选修一 $$

资源预览图

5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1
1
5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1
2
5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1
3
5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1
4
5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1
5
5.3 数据排序(教学课件)信息技术浙教版2019选择性必修1
6
所属专辑
相关资源
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。