版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法概述——算法的概念及特征——目录CONTENTS01算法的概念02算法的特性算法概述课程目标1掌握算法基本概念理解算法是什么与它的核心地位。2理解五大核心特性记牢有穷、确定、输入、输出、有效并会判断。3学会区分算法类型分清数值运算与非数值运算算法。4建立算法思维遇到问题,先想解决步骤是什么。算法的概念01算法概述算法的基本定义算法就是为了解决一个问题而设计的具体步骤与解决方法。思考"先做什么、再做什么、最后做什么",你就是在设计算法。做饭有菜谱步骤做题有解题步骤编程有执行步骤算法一点都不神秘,它在生活中无处不在。算法概述程序核心组成数据结构+算法=程序数据结构解决数据怎么存放。算法解决数据怎么处理、步骤是什么。合在一起两样结合,才是一个完整的程序。算法概述算法的两大类数值运算算法用来解决数学计算问题;有严格的公式、步骤、精确的结果;比如:解方程、求和、算图形面积、算平均数;我们写的"求两数之和"就是典型例子。非数值运算算法不侧重数学计算,侧重管理、查找、排序、调度;比如:图书检索、成绩管理、人事管理、车辆调度;应用范围更广,更贴近实际工作;以后我们会遇到大量这类算法。02算法的特性算法概述特性详解(一)特性1·有穷性必须在有限步骤、有限时间内结束;不能无限循环、不能永远执行不完;无限执行的步骤,不能叫算法。特性2·确定性每一步都必须意思明确、没有歧义;"把成绩好的同学挑出来"不明确、没有标准;正确写法:把80分及以上的同学挑出来。算法概述特性详解(二)特性3·输入算法要有零个或多个输入;多输入:a+b要给出a和b的值;零输入:比如直接输出Hello。特性4·输出必须有一个或多个输出;算法的目的就是"求解",必须有结果;没有输出,算法就没有意义。算法概述特性详解(三)特性5·有效性每一步都必须能有效执行、得到确定结果;只有每一步都能真正做得到,才是有效算法。反例:c=a/0——除数不能为0,无法执行,就是无效步骤。口诀:有穷、确定、可输可出、有效执行。算法概述五大特性速查清单1有穷性步骤有限必须结束2确定性每步清晰没有歧义3输入0个或多个4输出至少1个5有效性每步都能执行成功这五大特性是本节课最重要、最常考的内容,缺一不可。算法概述任务总结1算法的概念解决问题的具体步骤和方法,是程序的灵魂。2算法的分类数值运算与非数值运算两大类。3五大特性有穷、确定、输入、输出、有效,缺一不可。4核心思想先设计算法再写代码,思路清晰错误少。谢谢大家主讲人:李喜英循环累加——求100以内整数和——目录CONTENTS01任务导入02核心知识点03任务实施循环累加课程目标1了解循环结构思想循环是重复执行同一操作,掌握适用场景。2掌握for循环语法熟记结构与含义,独立写出框架。3实现累加运算理解循环变量、累加变量的作用。4调试常见错误避免条件写错、初始化出错。任务导入01循环累加不用循环,行不行?不用循环求1到100的和,只能这样写:sum=1+2+3+...+100;问题1·代码冗长要写99个加号,极其繁琐,容易写错、漏写。问题2·灵活性差改成求1到1000的和,就要重复写上千个加号,效率极低。循环的作用:让计算机重复执行同一套操作,写一次代码执行多次,简洁又灵活。循环累加循环结构核心逻辑本质:重复做同一件事,直到满足停止条件。就像每天起床、洗漱、吃早餐,重复执行,直到出门上学。1初始化给循环变量、累加变量设定初始值(如sum=0)。2循环条件判断什么时候继续、什么时候停止(如到100停止)。3更新操作每次循环后更新循环变量(如从1变2、再变3)。核心知识点02循环累加for循环语法结构实现循环有三种方式,今天先学最常用的一种——for循环。for(初始化表达式;循环条件表达式;更新表达式){
//循环体:需要重复执行的代码}初始化表达式只执行一次循环条件表达式每次循环前判断更新表达式每次循环体后执行语法结构非常固定,下面逐一拆解每一部分的作用。循环累加for循环三部分详解①初始化表达式循环开始前只执行一次,给变量设定初始值,如inti=1,sum=0。i是循环变量控制次数,sum是累加变量存结果,多变量用逗号分隔。②循环条件表达式每次循环前都要判断一次:条件成立(结果为1)执行循环体,不成立(0)退出。如i<=100:只要i不超过100就继续,超过100就停止。③更新表达式每次执行完循环体后,更新循环变量的值,让循环逐渐接近停止条件。如i++让i自增1;也可写i+=1,其中i++更简洁常用。循环累加for循环执行流程(重点)①初始化一次②判断i<=100③循环体累加④更新i++⑤回到②重复初始化给i和sum赋值:i=1,sum=0。判断条件成立执行循环体,不成立退出循环。重复更新i后回到第②步,直到条件不成立。任务实施03循环累加第一步·第二步步骤1·基础框架步骤2·定义变量#include<stdio.h>//输入输出头文件intmain(){
//后续代码写在这里
return
0;}#include<stdio.h>intmain(){
inti=1;//循环变量,从1开始
intsum=0;//累加变量,初始化为0
//循环代码写在这里
return
0;}重点提醒:sum一定要初始化为0,否则累加结果会出错。循环累加核心语句sum=sum+i第一次循环sum=0+1=1第二次循环sum=1+2=3以此类推直到i=100,完成累加第三步·for循环与累加#include<stdio.h>intmain(){
inti=1;
intsum=0;
for(i=1;i<=100;i++){sum=sum+i;//累加操作}
return
0;}循环累加#include<stdio.h>intmain(){
inti=1;
intsum=0;
for(i=1;i<=100;i++){sum=sum+i;}printf("1到100的累加和为:%d\n",sum);
return
0;}运行结果1到100的累加和为:5050结果正确!我们成功用循环解决了累加问题。请在Dev-C++中敲一遍,感受循环的作用。第四步·输出结果循环累加常见错误解析(避坑)错误1·sum未初始化输出随机数而不是5050——未初始化的变量值是随机的,必须初始化为0。错误2·条件写成i<100输出4950,少加了100——i=100时条件不成立,要写成i<=100。错误3·漏掉i++程序黑屏(死循环)——i永远是1,条件永远成立,务必加上更新表达式。初学者写循环最容易踩这三个坑,对照检查就能避开。循环累加任务总结1循环思想循环就是重复做同一件事。2for语法初始化、条件、更新缺一不可。3累加实现sum=sum+i,1到100的和是5050。4后续学习后续还有while、do-while循环。谢谢大家主讲人:李喜英算法表示————流程图————目录CONTENTS01为什么需要流程图02流程图常用符号03流程图的绘制规则04实践操作算法表示课程目标1掌握流程图作用理解流程图在程序设计中的价值。2熟记常用符号准确区分每种符号的用途。3掌握绘制规则规范画出标准流程图。4独立绘制流程图包括顺序结构和循环结构。为什么需要流程图01算法表示流程图的核心作用以"求100以内整数和"为例对比:文字描述步骤多、容易混乱,不直观。流程图几个图形加箭头,顺序、条件、循环清晰呈现。核心作用把抽象算法转化为直观、易懂、统一的图形。流程图方便我们梳理逻辑、交流思路、检查错误,是写代码前的重要工具。算法表示流程图的三大优势1直观性强用图形代替文字,步骤与关系一目了然。2逻辑性强绘制时必须理清先后顺序与判断条件,避免逻辑混乱。3通用性强符号与规则统一,谁都看得懂,便于沟通协作。流程图就像算法的"施工图",把抽象步骤变成直观图形。流程图常用符号02算法表示常用符号(一)(二)起止框(圆角矩形)开始表示算法的开始和结束;框内必须写"开始"或"结束";一个流程图只有一个开始、一个结束。处理框(矩形)sum=0表示具体操作:初始化、赋值、计算等;框内文字要简洁明确;例如sum=0、i++、sum=sum+i。算法表示常用符号(三)(四)判断框(菱形)i<=100?专门用于条件判断,结果只有是和否;框内写判断条件,如i<=100、a>b;必须有两个出口,分别标注"是"和"否"。连接框(圆形)①流程图过长、跨页或避免线条交叉时使用;连接不同位置的步骤;必须成对使用,内部填相同数字或字母。算法表示常用符号(五)与速记口诀流程线(带箭头的直线)代表步骤的执行方向,箭头必须明确;遵循从上到下、从左到右,所有图形必须用流程线连接。记忆口诀:起止框定首尾,处理框做操作,判断框做选择,连接框来跳转,流程线指方向。流程图的绘制规则03算法表示绘制规则(必记)顺序规则与算法执行顺序一致:从开始出发,按步骤依次绘制,最后到结束。方向规则箭头默认从上到下、从左到右;循环往回跳转要清晰标注。判断框规则必须有两个出口,分别标注"是"和"否",对应两种分支。简洁规则图形大小均匀、线条不交叉、文字简短;过长可用连接框分页。实践操作04算法表示绘制顺序结构流程图第一步先画起止框:左上角写"开始",右下角写"结束"。第三步补画sum=a+b和输出sum,连到结束框。开始定义a、b、suma=5,b=3sum=a+b输出sum结束顺序结构:依次执行第二步依次画处理框:定义a、b、sum,a=5,b=3,用流程线从上到下连接。算法表示开始sum=0,i=1i<=100?是sum=sum+ii++否输出sum结束开始与初始化开始框向下连接处理框sum=0,i=1。画判断框菱形标注i<=100,分出"是/否"两个出口。是分支连接sum=sum+i与i++,流程线跳回判断框,形成闭环。否分支连接输出sum,最后连到结束框。循环核心判断框+往回跳转的流程线=循环闭环。绘制循环结构流程图(重点)算法表示常见绘制错误(避坑)✕判断框只有一个出口忘记"是/否"分支,必须补全两个出口。✕流程线没有箭头无法判断执行方向,所有流程线必须加箭头。✕循环没有跳回判断框无法形成闭环,更新后的流程线要连回判断条件。✕符号用错处理框和判断框混用,牢记圆角起止、矩形处理、菱形判断。初学者常犯这四种错误,画完对照检查一遍。算法表示拓展练习练习一绘制求1到50整数和的流程图,只需修改循环条件即可。练习二绘制输入两个整数判断大小的流程图,用到判断框和两个分支。课后完成这两个练习,巩固顺序结构与循环结构的画法。算法表示任务总结本节课我们学习了流程图的核心知识。1流程图作用算法的图形化表示,直观清晰、逻辑性强。2符号与规则熟记五种符号与四条规则。3独立绘制完成顺序结构和循环结构流程图。4避开错误单出口、无箭头、不闭环等。谢谢大家主讲人:李喜英如何评判算法优劣——时间复杂度与空间复杂度入门——目录CONTENTS01评判算法优劣02时间复杂度入门03空间复杂度入门数据的表现形式及数据类型课程目标1四大评判维度建立全面的算法评估思维。2理解时间复杂度熟练运用大O表示法。3区分常见类型快速区分不同算法的效率。4理解空间复杂度明白时间与空间的权衡。评判算法优劣01如何评判算法优劣算法优劣的评判标准正确性最基本、最首要的要求:对所有合法输入都能算出正确结果,结果不对再快也没意义。可读性逻辑清晰、容易理解:方便自己调试修改,也方便与同学协作交流。健壮性即容错能力:遇到非法数据、边界值不能轻易崩溃,要妥善处理。效率(重点)指执行时间与占用空间:数据量越大,高效算法优势越明显。时间复杂度入门02如何评判算法优劣什么是时间复杂度不是运行的具体秒数,而是执行时间随问题规模n增长的变化趋势——数据量变大时,速度怎么变化。大O表示法标准形式O(f(n)):表示时间的增长量级,忽略常数、系数,只看核心增长趋势。如单层循环执行n次就是O(n)。分析时重点看最坏情况下的时间复杂度,这是算法性能的评估基准。如何评判算法优劣常见时间复杂度(上)O(1)常数阶执行时间和数据规模n完全无关;不管n多大,运行时间都恒定;例如:访问数组中指定索引的元素,一步完成。O(logn)对数阶执行时间随n的对数增长,增速非常慢;效率很高;例如:有序数组的二分查找,每次排除一半数据。下面继续学习另外两种常见类型。如何评判算法优劣O(n)线性阶执行时间随n线性增长;数据量越大,运行时间越长;例如:单层循环遍历数组。O(n²)平方阶执行时间随n的平方增长,增速极快;效率较低,数据量稍大运行时间就大幅增加;例如:两层嵌套循环遍历n×n二维数组。效率排序:O(1)>O(logn)>O(n)>O(n²),尽量选择低阶复杂度的算法。常见时间复杂度(下)空间复杂度入门03如何评判算法优劣什么是空间复杂度描述算法执行过程中,所需存储空间随问题规模n增长的变化趋势。输入数据输入数据本身的空间程序代码程序代码占用的空间辅助变量(重点)运行时临时开辟的额外空间分析空间复杂度时,重点关注辅助变量空间。如何评判算法优劣常见空间复杂度O(1)常数空间也叫原地算法;辅助空间是固定常量,不随n变化;例如:交换两个变量、找数组最大值,只用几个临时变量。O(n)线性空间辅助空间随n线性增长;例如:创建长度为n的数组存中间结果;或者:递归深度为n的简单递归。如何评判算法优劣时间与空间的权衡时间和空间往往不能同时最优,以斐波那契数列为例:方法一·递归代码简洁,但存在大量重复计算;时间复杂度O(2ⁿ)指数级,效率极低;空间复杂度O(n),占用递归调用栈空间。方法二·迭代用循环代替递归,两个变量保存状态;时间复杂度优化到O(n);空间复杂度只有O(1),空间利用率极高。可以用空间换时间。也可以用时间换空间,按场景选择。如何评判算法优劣任务总结1四大维度正确性、可读性、健壮性、效率。2时间复杂度大O表示:O(1)、O(logn)、O(n)、O(n²)。3空间复杂度关注辅助空间,常见O(1)和O(n)。4合理权衡在时间效率和空间消耗间权衡。谢谢大家主讲人:李喜英闰年判断——结构化程序设计方法——目录CONTENTS01结构化程序设计方法02任务实施结构化程序设计方法01闰年判断结构化设计的四个基本思路自顶向下把复杂问题分阶段处理,每个阶段只解决一个容易理解的小问题。逐步细化把大任务拆成若干小任务,逻辑更简单,写起来、改起来都轻松。模块化设计按功能分成独立子模块,每个模块只做一件事,方便复用维护。结构化编码用C语言准确写出代码,保证设计和代码完全一致。四个思路结合,就是完整的结构化程序设计方法。任务实施02闰年判断任务描述与闰年规则设置变量year,遍历2000至2500每一年,逐一判断是不是闰年。规则一能被4整除,但不能被100整除是闰年规则二能被400整除也是闰年规则三不满足上面两个条件不是闰年三条规则是整个算法的核心算法步骤(一)用自然语言把步骤写清楚,这就是逐步细化的过程:1第一步·初始化把年份变量year赋值为2000。2第二步·第一次判断year不能被4整除→输出"不是闰年",跳到第六步。3第三步·第二次判断能被4整除但不能被100整除→输出"是闰年",跳到第六步。4第四步·第三次判断能被400整除→也输出"是闰年",跳到第六步。闰年判断闰年判断算法步骤(二)5第五步·结果兜底走到这一步,直接输出"不是闰年"。6第六步·迭代更新执行year=year+1,年份加1。7第七步·循环控制year≤2500就回到第二步继续;否则算法结束。一步步写下来,逻辑非常清楚,没有歧义。闰年判断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江宁波东方人力资源服务有限公司派遣至宁波大学非事业编制人员招聘1人考试模拟试题及答案解析
- 2026年孕婴童产品行业洞察报告及未来五至十年发展趋势报告
- 2026年铅粒行业洞察报告及未来五至十年发展趋势报告
- 2026年智能工业行业洞察报告及未来五至十年发展趋势报告
- 2026年鄂州市华容区公务员人员招聘考试模拟试题与答案详解
- 2026年公交广告行业洞察报告及未来五至十年发展趋势报告
- 2026广州华夏职业学院和广东华夏高级技工学校秋季招聘及高层次人才引进考试备考题库及答案解析
- 2026年家庭服务机器人行业洞察报告及未来五至十年发展趋势报告
- 2026年柱式锂电池行业洞察报告及未来五至十年发展趋势报告
- 2026江苏南京医科大学基础医学院法医学系诚聘笔试模拟试题及答案解析
- 2025年养老金融服务财务风险防控可行性研究报告
- 碳一化工培训课件
- 航天十院考试试题及答案
- 2025年高中英语教师课程标准考试测试卷及答案(共三套)
- 种猪引种隔离管理制度
- 农民培训教师管理制度
- 高内涵细胞分析系统应用
- 供电营销安全课件
- 人教版四年级上册数学《速度、时间和路程》获奖说课稿
- GB/T 15597.2-2024塑料聚甲基丙烯酸甲酯(PMMA)模塑和挤出材料第2部分:试样制备和性能测定
- JBT 14910-2024《剪切销安全联轴器》
评论
0/150
提交评论