版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年中新嘉善现代产业园开发有限公司招聘备考题库及答案详解1套
- 2026年宜宾市叙州区龙池乡卫生院招聘内科医生备考题库及1套参考答案详解
- 2026年南昌振兴产业资本管理有限公司招聘备考题库及答案详解一套
- 2025年浙江乍浦经济开发区(嘉兴港区)区属国有公司公开招聘工作人员备考题库完整参考答案详解
- 2026年中国农业科学院农产品加工研究所关于招聘果蔬加工智造与营养健康创新团队执行首席的备考题库及答案详解参考
- 骨科护理宣教微课
- 餐饮加工安全意识培训
- 2026年北京华大智宝电子系统有限公司招聘备考题库有答案详解
- 2026年中国纺织对外经济技术合作有限公司招聘备考题库及答案详解参考
- 班级互动小游戏-课件共30张课件-小学生主题班会版
- 物流企业仓储安全操作规程与培训教材
- 黄体酮破裂课件
- 中学学生教育惩戒规则实施方案(2025修订版)
- ISO 9001(DIS)-2026与ISO9001-2015英文标准对照版(编辑-2025年9月)
- 结算审计踏勘现场实施方案详细版
- 手机玻璃工厂年终总结报告
- 全国大学生职业规划大赛《信息与计算科学》专业生涯发展展示
- 急诊科护士年终总结汇报
- 瓦斯发电安全规程培训课件
- 无人机生产线布局与空间规划方案
评论
0/150
提交评论