高三信息技术:算法设计与优化微课课件_第1页
高三信息技术:算法设计与优化微课课件_第2页
高三信息技术:算法设计与优化微课课件_第3页
高三信息技术:算法设计与优化微课课件_第4页
高三信息技术:算法设计与优化微课课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法设计与优化从概念到效率,从经典到优化2026年课程导览01算法初识从生活问题唤起算法直觉02算法描述建立概念、特征与描述方法03效率度量引入时间与空间复杂度04经典算法冒泡排序、二分查找与枚举实战05优化进阶从优化技巧到计算思维01算法初识算法就在我们身边算法藏在生活细节里算法就是解决特定问题的有限步骤的有序集合日常流程都是算法,算法并不陌生你能说出生活中还有哪些“算法”吗?不妨把日常步骤拆开想一想。生活处处是算法起床后先刷牙再吃早餐超市购物按性价比挑选商品菜谱里“先热锅、后倒油、油温六成再下食材”三个关键词特定问题有明确目标有限步骤必须在有限时间内终止有序集合顺序影响结果算法不等于程序算法是思路,程序是落地。同一个算法,既能用

Python

写,也能用

C++

写。程序算法在某种编程语言中的具体实现,还包含界面布局、数据存储等内容实现落地“先想清楚解决什么问题、按什么步骤解决,再进入编程环节。”算法解决问题的步骤与逻辑,与具体语言无关思路逻辑五性特征判断算法有穷性步骤有限步骤必须有限。反例警示“打印所有质数”违背此条——质数无穷多,步骤永远走不完,高考真题考过。确定性无歧义每步无歧义。模糊指令“加热到合适温度”是模糊指令,改成加热到100℃才算明确。03可行性

步骤能被执行算法中的每一步,都应当是计算机实际能做到的操作——能落地,才谈得上“执行”。不写做不到的步骤机器可操作输入与输出输入可零个或多个。输出至少一个;没有输出无法验证结果。三种基本控制结构再复杂的算法,拆开看都只是三种结构的组合。顺序结构步骤从头到尾依次执行,一步接一步,像排队一样。小王周末安排——八点起床、九点学习、两点半打球,就是一条顺序流程。选择结构也叫分支结构,按条件走不同路径,像岔路口选方向。儿童买火车票按年龄划分优惠档次。循环结构让某些步骤重复执行,像跑圈一样一圈圈转。累加求和时反复执行“加上当前数”的操作。三种结构组合算法初识小结农夫过河:带狼、羊、白菜渡河,船每次只能载农夫加一样东西;人一离开,狼吃羊、羊吃白菜。“会检验步骤,才算真正理解算法”这恰好对应算法的五性特征与顺序、选择结构的运用。当学生能用这三个问题审视一个生活方案,算法思维就已经开始萌芽。设计过程的关键01设计过程答案不是重点,设计过程才是02列步骤必须罗列有限且确定的步骤03检验每一步都要检验可行性04完整方案最终输出一个完整方案三个检验问题步骤是否有限?步骤是否无歧义?步骤能否执行?对应结构顺序、选择结构02算法描述把想法变成清晰的步骤用自然语言先说清算法有三种表达方式:自然语言、流程图、伪代码。

高考常考:哪种描述方式最容易产生二义性?答案正是自然语言。当需要计算机精确执行时,必须换用更严谨的工具。示例:计算两数之和01输入两个数

a

b02计算

c=a+b03输出

c三步走输入→计算→输出优点&缺点优点易懂、贴近口语,适合课堂讨论与初步构思。缺点易产生歧义——“输入两个数”没说清类型和顺序,不同人理解可能不同。自然语言说人话,但电脑需要"精确指令"。流程图:直观呈现结构五类符号,各司其职图形让结构可见,也让高考考点清晰五五类符号,各司其职圆角矩形开始与结束矩形计算与赋值菱形条件判断平行四边形输入与输出带箭头线执行方向

实例一个实例走通全流程判断某数是否为正数开始→输入数值→菱形判断“大于零?”→满足输出“正数”,不满足输出“非正数”→结束。

满足输出“正数”

不满足输出“非正数”衡优势与短板优势结构一目了然,尤其适合展示选择与循环的分支走向短板画图比自然语言费时,复杂算法易显拥挤伪代码:折中的表达“算法描述,介于自然语言与程序代码之间,用类代码写法表达逻辑。”—没有严格语法,定义合理、无矛盾即可01求和示例①令

sum=0,i=1②当

i≤100

时,反复执行

sum=sum+i,i=i+1③输出

sum02易错点机器语言不属于算法描述方式——它是给计算机看的底层指令,不是给人描述算法的工具。03分工初学先以自然语言理清思路,再用流程图或伪代码落实。先想清楚,再动手写。选择结构:让程序会判断01选择结构核心机制条件为真走一条路,条件为假走另一条路就像走到一个岔路口,根据条件选择前进方向。02选择结构生活场景梅雨季:室内湿度大于

60

启动除湿机,否则不启动火车票:儿童按年龄档位享受不同优惠程序里天天都在做这样的判断题03选择结构易错点正向反向皆可,关键是逻辑等价、边界值不漏。“湿度大于

60”与“湿度至少

61”等价;写成“湿度不小于60”就把60也算进除湿范围,结果出错。判断边界时多问一句:这个数到底算不算?循环结构:让程序会重复循环条件决定何时继续、何时停止——条件误写,结果必错。循环结构两大关键+应用练习3项循环条件求1到n的和时,把

i≤n

误写成

i<n,就会漏加n。循环体忘记在循环体内更新变量,条件永远成立,程序陷入死循环。应用与练习累加求和、遍历数据、重复尝试,都离不开循环;动手写代码前,先在纸上手工模拟两三轮,观察变量变化与条件何时变假。算法描述小结描述方式管“怎么说”,控制结构管“说什么”——两者合起来才是完整表达。先想清楚,再动手写自然语言先讲清思路,像跟朋友聊天一样把步骤说顺。流程图用箭头和框,把循环、分支的嵌套关系画明白。伪代码用半代码半人话的方式,准确定义每一步做什么。

一上来就敲代码逻辑没理顺,越改越乱

先在纸上画清三种结构的嵌套代码往往水到渠成03效率度量好算法,快而省为什么需要复杂度这个“趋势”,就是复杂度要刻画的东西,也是整个效率度量章的出发点。

现状用秒表测运行时间,同一算法在老旧电脑与新电脑上结果不同,换编程语言又不同。硬件与软件环境干扰太多,无法反映算法本身优劣。解决方案

对策建立一套脱离硬件、客观稳定的评价标准。只关注一个核心变量——当数据规模

n

不断增大时,算法的时间与空间开销按什么趋势增长。时间复杂度与空间复杂度两个维度时间复杂度运行时间随问题规模

n

增长的趋势空间复杂度运行中临时占用存储空间的量度输入规模整理书架书是输入;时间复杂度是“要翻多少次”,空间复杂度是“旁边要腾多大桌面”。翻的次数→时间桌面大小→空间直观类比两条边界都只用大O表示增长趋势,不追求精确秒数或字节数空间复杂度只计额外临时空间,输入本身占用的空间不计入边界约束大O:只看最高阶项三条规则,逐层简化››规则简单,却是分析一切复杂度的统一语言1规则01只留最高阶项低阶项忽略n趋近无穷大时,低阶项影响可忽略2规则02去掉系数只看量级系数不改变增长量级3规则03常数归O(1)统一记法任何常数项统一记为O(1)复杂度求解三步法“会算,比会背更重要”“会算,比会背更重要”1STEP01定位基本操作找执行次数最多的语句通常是循环体内的那条2STEP02计算执行次数f(n)看清次数与n的关系——遍历数组求和,累加执行

n

次,f(n)=n嵌套双重循环:外层n次、内层n次,共

n×n

次,f(n)=n²3STEP03按大O规则化简f(n)=n→O(n)f(n)=n²→O(n²)常见复杂度排序从优到劣:O(1)→O(logn)→O(n)→O(nlogn)记住这个排序,就握住了衡量算法效率的标尺。六档复杂度,从快到慢排排坐O(1)常数时间无循环无递归,如直接访问数组第一个元素O(logn)对数时间二分查找,数据翻倍只多执行一次,增长极慢O(n)线性时间一层循环遍历O(nlogn)归并排序等高效排序O(n²)平方时间冒泡排序、选择排序O(2ⁿ)/O(n!)指数级、阶乘级数据稍大几乎跑不动空间复杂度三来源“空间复杂度看的是运行时额外空间,三个来源要逐一排查。”

只盯变量,会漏掉递归悄悄吃掉的栈空间。数据空间变量、数组、对象占用的空间。新建存放

n

个整数的数组,就是

O(n)

空间。环境空间递归调用时,系统为保存调用点上下文分配的栈空间。递归

n

层的函数往往就是

O(n)

空间——这是学生最容易忽略的一处。指令空间算法代码本身编译后的内存占用。现代高级语言中由编译器优化,通常可忽略不计。时间与空间的权衡优化不止看时间,还要看空间——冒泡vs归并,就是一个典型权衡。没有绝对最优,只有场景适配:时间敏感优先降时间复杂度,内存紧张优先压空间。冒泡排序空间占用:O(1)——原地排序,几乎不占额外空间只用一个临时变量,就像就地把书架上的书来回挪时间耗费:O(n²)——两两比较,数据一多就明显变慢n=1000时约50万次比较,规模稍大就吃力归并排序时间表现:O(nlogn)——分而治之,速度显著提升把大问题拆成小问题,各自排好再合并空间代价:O(n)——合并时要额外开一块辅助空间像把两摞书先搬到空桌上合并,再搬回书柜效率度量小结复杂度是评价算法的统一标尺,上承描述、下启优化。“一套评价语言,从“会不会写”升级到“哪个更快、哪个更省”。”效率度量,是承上启下的枢纽一套评价语言统一标尺时间复杂度看“翻多少次”,空间复杂度看“占多大桌面”大O符号让不同算法在同一把尺子下比较从“会写”到“会评”能力升级前两章解决“描述算法”,本章升级为“评价算法”核心问题从“会不会写”转向“哪个更快、哪个更省”为后续章节备好工具衔接优化冒泡排序为什么慢、二分查找为什么快、枚举为什么要控制范围——都靠复杂度来回答最后一章“优化算法”的分析依据,也在这里备好04经典算法在实战中理解算法冒泡排序:相邻比较沉底核心机制比较·交换像整理书架时,相邻两两比较,发现次序不对就交换位置。每一趟下来,当前最大值就会像石头一样慢慢“沉”到序列末端。一趟怎么走扫描·交换·沉底第一步从前往后依次扫描每一对相邻元素。第二步遇到次序不符,就把两个数字交换位置。第三部扫描完一遍,最大值落到序列尾部。实例推演96·89·85·64·72对96、89、85、64、72从小到大排序。第①趟96沉到最后第②趟89沉到倒数第二循环依次类推,直到全部有序为什么先学它入门首选实现简单、过程直观,一眼就能看懂。适合作为排序算法入门案例,先建立整体感觉。冒泡排序的复杂度时间复杂度最坏/平均O(n²),n个元素至少n−1趟,每趟比较次数逐趟递减,总操作次数约n²量级。最好O(n),已基本有序时,一趟无交换即可提前结束。空间复杂度O(1)只在交换时用一个临时变量,属于原地排序。权衡判断省空间,但时间属平方档;数据规模一大明显变慢。适合小规模排序不足上万条数据时效率不足冒泡排序的优化:标志位问题→对策普通冒泡排序跑满全程,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论