版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.2数据的排序高中信息技术/教科版/选择性必修1目录1.情境导入3.讨论探究2.体验探究4.课堂小结1.情境导入网上商城平台是如何实现按价格、销量等进行升序或降序排序,并显示商品信息的呢?本节围绕“按序查看商品”项目展开学习,通过项目活动学习常见的排序算法,体会迭代方法的具体应用,理解数据结构与算法的关系。本节主要包含“按价格升序显示商品”和“按销量降序显示商两个任务。2.体验探究
任务一
按价格升序显示商品
活动1初步尝试排序下面是某网上商城的签字笔销售数据,请将表中数据按价格从低到高进行排序,将排序后的结果填入对应的表格中。品牌销量/盒价格/元评论数/条博士8066108英雄1887886永辉23658186晨辉20046190得利566850梅花1852692签字笔销售数据
任务一
按价格升序显示商品
活动1初步尝试排序品牌销量/盒价格/元评论数/条填一填按价格从低到高排序后的签字笔销售数据梅花1852692晨辉20046190永辉23658186博士8066108得利566850英雄1887886你是如何排序的呢?对签字笔销售数据按照价格从低到高进行排序的过程就是整理数据顺序的过程。通过比较价格的大小,调整数据的顺序。在整理的过程中,只调整数据的排列顺序,不改变数据内容。排序(sorting)就是整理数据的顺序,使其从无序变为有序。排序的概念3.讨论探究
任务一
按价格升序显示商品
活动2体验冒泡排序过程博士66英雄78永辉58晨辉46得利68梅花26不交换博士66英雄78永辉58晨辉46得利68梅花26交换博士66永辉58晨辉46英雄78得利68梅花26交换博士66永辉58晨辉46得利68英雄78梅花26博士66永辉58晨辉46得利68梅花26英雄78交换交换在未排序的签字笔销售数据中找到价格最高者放在序列的末尾,这样未排序的签字笔销售数据就会减少1个。若干次迭代后,当未排序的签字笔销售数据只剩下一个时,排序就完成了。第1次迭代过程
任务一
按价格升序显示商品
活动2体验冒泡排序过程经过5次“比较一交换”,第1次迭代后价格的序列是:66,58,46,68,26,78。根据这个思路,补全图3.2.3,完成第2次迭代过程。博士66永辉58晨辉46得利68梅花26英雄78英雄78英雄78英雄78交换永辉58晨辉46博士66得利68梅花26永辉58晨辉46博士66得利68梅花26永辉58晨辉46博士66梅花26得利68交换不交换交换第2次迭代过程
任务一
按价格升序显示商品
活动2体验冒泡排序过程填一填第2次迭代后价格的序列是:
,未排序的数据剩下
个。第3次选代后价格的序列是:
,未排序的数据剩下
个。第4次迭代后价格的序列是:
,未排序的数据剩下
个。第5次选代后价格的序列是:
,未排序的数据剩下
个。经过5次迭代,最后完成了6个签字笔销售数据按照价格升序排列。58,46,66,26,68,78446,58,26,66,68,78346,26,58,66,68,78226,46,58,66,68,781
任务一
按价格升序显示商品
活动3建立数据结构冒泡排序(bubblesort)是一种通过“比较一交换”进行排序的方法,首先将第1个数据和第2个数据进行比较,若为逆序,则将两个数据交换位置;然后比较第2个数据和第3个数据,以此类推,直至最后两个数据进行过“比较一交换”为止。上述过程称作第一趟“冒泡”,其结果使得最大的数据被放到最后的位置上。之后对除了最大数据之外的剩余部分进行下一趟“冒泡”,经过若干趟“冒泡”后,如果剩余部分只包含一个数据,则冒泡排序完成。冒泡排序
任务一
按价格升序显示商品
活动3建立数据结构为了便于对签字笔销售数据进行处理,定义签字笔商品类,其Python代码如下。01.#定义签字笔商品类02.classpen:03.def__init__(self,brand,sales,price,comments)04.self.brand=brand
#品牌05.self.sales=sales
#销量06.self.price=price
#价格07.ments=comments
#评论数
任务一
按价格升序显示商品
活动3建立数据结构创建一个线性表对象alist,存放表3.2.1所示的签字笔销售数据对象。请补全下面的代码。08.fromlinearListimportLinearList
#导入线性表09.alist=LinearList()
#创建线性表对象"10.alist.appendItem(pen("博士",8,66,108))
#添加签字笔数据元素11.alist.appendItem(pen("英雄",188,78,86))
#添加签字笔数据元素12.alist.appendItem(pen("永辉",236,58,186))
#添加签字笔数据元素13alist.appendItem(pen())#添加签字笔数据元素14.alist.appendItem(pen())#添加签字笔数据元素15.alist.appendItem(pen())#添加签字笔数据元素‘晨辉’,200,46,190‘得利’,56,68,50‘梅花’,185,26,92
任务一
按价格升序显示商品
活动4算法设计与实现假设有n个签字笔销售数据,冒泡排序的算法描述如下:(1)进行n-1趟“冒泡”过程,每趟操作如步骤(2)和(3),如果未完成则继续进行操作。第1趟的冒泡范围是n个数据(2)从第1个数据开始,依次比较相邻两个数据,如果逆序则交换位置,直到比较完最后两个数。冒泡范围内的最大数据会被交换到最后的位置上。(3)将本趟的最大数据排除出“冒泡”操作范围。根据上述算法,定义冒泡排序函数bubbleSort(alist,key),参数alist表示需要排序的线性表,key表示排序的关键词。请补全下面的代码。
任务一
按价格升序显示商品
活动4算法设计与实现16.#冒泡排序算法17.defbubbleSort(alist,key):
18.foriinrange(alist.size()-1):
#控制“冒泡”趟数19.#控制“冒泡”范围20.forjinrange(1,alist.size()-i):
21.#相邻两数比较22.ifgetattr(
,key)>getattr(alist.getItem(j),key):23.temp=alist.getItem(j-1)24.alist.setItem(j-1,alist.getItem(j))25.alist.setItem(j,
)
#交换位置alist.getItem(j-1)temp
任务二
按销量降序显示商品
活动1体验直接插入排序过程如何将表中的所有数据按照销量从高到低进行排序呢?第1个签字笔销售数据已经有序,把待排序的签字笔销售数据按照销量插入到有序序列的合适位置,有序数据就增加1个。这样迭代若干次后,直到所有的待排序签字笔销售数据插入完为止,排序就完成了。比较插入
任务二
按销量降序显示商品
活动1体验直接插入排序过程销量是80的签字笔销售数据是有序子序列,把销量为188的签字笔销售数据插入。比较80和188的大小,80<188,将销量为80的签字笔销售数据后移一个位置,将销量为188的签字笔销售数据插入到它的前面。第1次迭代后销量的序列是:188,80,236,200,56,185。第1次迭代
任务二
按销量降序显示商品
活动1体验直接插入排序过程第2次迭代:插入销量为236的签字笔销售数据,从有序子序列(188,80)的最后1个数据开始,将销量为236的签字笔销售数据与序列中的数据逐一比较大小,确定插入位置。比较80和236,80<236。将销量为80的签字笔销售数据后移一个位置;比较188和236。188<236,将销量为188的签字笔销售数据后移一个位置,将销量为236的签字笔销售数据插入到它的前面。经过两次比较后确定位置并插入,第2次迭代后销量的序列是:236,188,80,200,56,185。第2次迭代
任务二
按销量降序显示商品
活动1体验直接插入排序过程请在下面的横线上依次写出其他各次迭代的结果。第3次迭代::插入
,迭代后销量的序列是:
;
第4次迭代:插入
,迭代后销量的序列是:
;第5次迭代:插入
,迭代后销量的序列是:
;经过5次迭代,最后完成了6个签字笔销售数据按照销量降序排列。填一填200236,200,188,80,56,18556236,200,188,80,56,185185236,200,188,185,80,56
任务二
按销量降序显示商品
活动1体验直接插入排序过程直接插入排序(straightinsertionsort)是一种通过“比较一插入进行排序的方法。基本操作是从有序子序列的最后一个数据开始,待排序的数据与有序子序列中的所有数据逐一进行比较,确定插入的位置并插入数据。上述过程称作一次插入操作,其结果是将一个数据插入到已经排好序的数据序列中,从而得到一个新的、数据数量增加一个的有序子序列。对未排序的数据进行相同的操作,重复若干次插入操作,直到所有的未排序数据插入完为止,则插入排序完成。直接插入排序
任务二
按销量降序显示商品
活动2直接插入排序算法的设计与实现分析活动1中排序过程和直接插入排序的基本思想,假设有n个签字笔销售数据,实现直接插入排序的算法描述如下:(1)进行n-1次插入操作,每次操作如步骤(2)和(3),如果未完成则继续进行。默认第1个数据是有序子序列。(2)取得当前待排序数据,从有序数据序列的最后一个数据开始,待排序数据与其逐一进行比较,如果大于对方则后移该数据,确定插入位置。(3)将待排序数据插入到有序数据序列中。
任务二
按销量降序显示商品
活动2直接插入排序算法的设计与实现根据上述算法,定义insertionSort(alist,key)函数,参数alist表示要排序的线性表,key表示排序的关键词。请补全下面的代码。16.#直接插入排序算法17.definsertionSort(alist,key):18.#默认第1个数据已有序,控制插入次数19.foriinrange(1,alist.size()):20.currentdata=alist.getItem(i)
#取当前待排序数据21.j=i22.#与待排序数据进行比较
任务二
按销量降序显示商品
活动2直接插入排序算法的设计与实现23.whilej>andgetattr(alist.getItem(j-1),key)<24.getattr(
)25.alist.setItem(j,alist.getItem(j-1))
#后移数据26.j=j-1
#确定插入位置27.alist.setItem(j,
)#插入数据currentdata,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026新疆博州联通小营盘营业厅招聘考试参考题库及答案解析
- 2026浙江宁波市余姚市农业农村局招聘下属单位编外人员2人考试参考题库及答案解析
- 2026年济宁邹城市教体系统急需紧缺人才招聘(70名)笔试备考试题及答案解析
- 2026年福建泉州仰恩大学招聘6名工作人员笔试模拟试题及答案解析
- 2026广西国土规划集团团队带头人招聘5人考试参考题库及答案解析
- 2026四川巴中市巴州区公益性岗位安置5人考试参考题库及答案解析
- 2026年徽商银行客服代表(劳务派遣制)招聘笔试模拟试题及答案解析
- 天府三中小学部2026年教师招聘备考题库及参考答案详解一套
- 2026年永丰县国丰资产营运有限公司面向社会公开招聘工作人员备考题库及一套参考答案详解
- 2026年河东区妇幼保健计划生育服务中心招聘派遣制工作人员备考题库及一套答案详解
- 骨科跟骨骨折课件
- 2026年美团商业分析师岗位笔试解析与面试问答技巧
- 某高校十五五教育大数据治理中心与智慧校园支撑平台建设方案
- 2026年山西警官职业学院单招综合素质考试备考试题带答案解析
- (2026春新版)人教版二年级数学下册全册教学设计
- 汽修厂文件档案归档制度
- 高校科研项目立项及管理规范
- 钣喷质检员考试题及答案
- 学生安全教育家长会课件
- 2026年云南省高二物理学业水平合格考试卷试题(含答案详解)
- 《事故隐患排查治理资金使用专项制度》
评论
0/150
提交评论