大学计算机算法基础PPT讲稿
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A(n) E(x)t(x) xDn
2020/7/16
大学计算机基础
22
② 最坏情况时间复杂度
最坏情况时间复杂度是指在所有输入 对应的算法时间复杂度中运算次数最多的
时间耗费。如果W(n)表示算法最坏情况
时间复杂度,则
W(n) = max{t(x)}
2020/7/16
大学计算机基础
23
2. 算法的空间复杂度
多个步骤由上到下依次执行,顺序不能打乱,称为顺序结构
2020/7/16
大学计Leabharlann Baidu机基础
4
2、选择结构: 例2:求两个整数a和b中的大者的算法
S1:输入a、b的值
S2:如果a>b,则执行S3;否则转去执行S4
S3:输出a的值,结束 S4:输出b的值,结束
其中,S3和S4根据条件只能执行一个,称为选择结构
1. 算法的时间复杂度
• 通常把算法中进行简单操作的次数的多少称为算
法的时间复杂度
• 算法的时间复杂度往往是问题规模的函数,即 T(n) = O(f (n))
其中,n表示问题的规模,f(n)为问题的规模函数 例如:求n的阶乘算法的时间复杂度为:
T(n) = n-1 通常表示:T(n) = O(n)
#include <stdio.h> void main() { double t,i;
t=1;i=2; while(i<=50) { t=t*i;
i=i+1; } printf(“%.0f”,t); }
§4.5 常用的算法介绍
•列举法:
根据提出的问题,列举所有可能情况,并用问题中给定的条 件检验哪些是需要,哪些是不需要。例如:求水仙花数。
§4.6 算法的复杂度
• 解决一个问题,可以有很多算法,如
何评价一个算法的好坏?
• 首先算法正确,具有算法的5个基本
特征
• 还需考虑:
– 执行算法消耗的时间 – 执行算法消耗的存储空间 – 具有可读性,易于理解 – 健壮性
• 评价方法:
– 事前估算 – 事后统计
• 评价结果:称为“算法复杂度” • 算法复杂度可以分为时间复杂度和空间复杂度
算法的空间复杂度是指执行该算法所需的内 存空间,记作
S(n) = O(f (n))
S(n)除了跟存储程序的指令、常数、变量
和输入数据的空间大小有关外,还跟存储一 些为实现计算所需信息的辅助空间的大小有 关。
2020/7/16
大学计算机基础
24
算法的伪代码表示法
用介于自然语言和计算机语言之间的文字和符号来 描述算法
伪代码描述50!:
1→t 2→i while i<=50 {t*i →t i+1 →i } print t
2020/7/16
大学计算机基础
15
算法的计算机语言表示法
必须严格遵守计算机语言的语法规则
计算机语言(C语言)描述50!:
算法的流程图表示法
• 传统流程图
顺序结构、选择结构和循环结构流程图
开始
例如:50!的流程图 t=1
i=2 t=t×i
i=i+1
Y i<=50 N 输出t
2020/7/16
结束
大学计算机基础
12
➢N-S图:三种控制结构的N-S图
50!的N-S图
1=>t 2=>i i×t =>t
i+1 =>i 直到i>50 输出结果
重复执行 多次, 循环结构
3、循环结构
例3:求出50!的算法
设t为被乘数,i为乘数
s1:使t=1
s2:使i=2
s3:t×i→t
为下一次乘法做准备
s4:i+1 →i
s5:当i≤50时转,去执行s3
s6: 输出t的值
顺序结构、选择结构、循环结构是表示一 个算法的基本结构。
由以上3种基本结构组成的算法,称为“结 构化”的算法,可以解决任何复杂的问题。
•递推法:
从已知的初始条件出发,逐次推出所要求的各中间结果和最 后结果。
•递归法:
将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐 层分解的过程,实际上并没有对问题进行求解,而只是当解决了 最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综 合,这就是递归的基本思想。
•回溯法:
通过对问题的分析,找出一个解决问题的线索,然后沿着这个线 索逐步试探,若试探成功,就得到问题的解,若试探失败,就逐 步回退,换别的路线再逐步试探。
2020/7/16
大学计算机基础
20
• 算法的时间复杂度还跟问题的输入数据有关,所以算
法的时间复杂度可以用两种形式表达:
①平均时间复杂度
②最坏情况时间复杂度
① 平均时间复杂度
• 平均时间复杂度能够计算出所有输入对应
的算法时间复杂度的平均值。
• 若用t(x)表示输入为x时的算法时间复杂
度,用E(x)表示出现输入x的数学期望, 则算法平均时间复杂度A(n)可以表示为:
2020/7/16
大学计算机基础
7
§4.3 算法的基本特征
1) 有穷性 算法中的步骤是有限的
2) 可行性 算法中的每一个步骤必须是可执行的
3) 确定性 算法中的每一个步骤必须是含义确切的
4) 有零个或多个输入 5) 有一个或多个输出
§4.3 算法的表示方法
• 自然语言 • 流程图 • 伪代码 • 计算机编程语言
大学计算机算法基础课件
§4.1 算法基本概念
1.算法的概念
为解决一个问题而采取的方法和步骤,称为算法。 用计算机来解决问题的方法和步骤,称为计算机
算法。分为数值运算算法和非数值运算算法。
2020/7/16
大学计算机基础
2
§4.2 算法的组成要素
一个算法含有两大要素:
• 操作步骤:对于计算机算法而言,包括组
成算法的各条指令,也就是对数据的运算 和操作。
• 控制结构:控制算法中各操作步骤地执行
顺序。通常有三种结构:
• 顺序结构 • 选择结构 • 循环结构
控制结构及算法举例
1、顺序结构: 例1:求圆的面积的算法 设r表示圆的半径,s表示圆的面积 步骤1:输入半径r的值 步骤2:s=3.14 ×r ×r 步骤3:输出s的值
2020/7/16
大学计算机基础
22
② 最坏情况时间复杂度
最坏情况时间复杂度是指在所有输入 对应的算法时间复杂度中运算次数最多的
时间耗费。如果W(n)表示算法最坏情况
时间复杂度,则
W(n) = max{t(x)}
2020/7/16
大学计算机基础
23
2. 算法的空间复杂度
多个步骤由上到下依次执行,顺序不能打乱,称为顺序结构
2020/7/16
大学计Leabharlann Baidu机基础
4
2、选择结构: 例2:求两个整数a和b中的大者的算法
S1:输入a、b的值
S2:如果a>b,则执行S3;否则转去执行S4
S3:输出a的值,结束 S4:输出b的值,结束
其中,S3和S4根据条件只能执行一个,称为选择结构
1. 算法的时间复杂度
• 通常把算法中进行简单操作的次数的多少称为算
法的时间复杂度
• 算法的时间复杂度往往是问题规模的函数,即 T(n) = O(f (n))
其中,n表示问题的规模,f(n)为问题的规模函数 例如:求n的阶乘算法的时间复杂度为:
T(n) = n-1 通常表示:T(n) = O(n)
#include <stdio.h> void main() { double t,i;
t=1;i=2; while(i<=50) { t=t*i;
i=i+1; } printf(“%.0f”,t); }
§4.5 常用的算法介绍
•列举法:
根据提出的问题,列举所有可能情况,并用问题中给定的条 件检验哪些是需要,哪些是不需要。例如:求水仙花数。
§4.6 算法的复杂度
• 解决一个问题,可以有很多算法,如
何评价一个算法的好坏?
• 首先算法正确,具有算法的5个基本
特征
• 还需考虑:
– 执行算法消耗的时间 – 执行算法消耗的存储空间 – 具有可读性,易于理解 – 健壮性
• 评价方法:
– 事前估算 – 事后统计
• 评价结果:称为“算法复杂度” • 算法复杂度可以分为时间复杂度和空间复杂度
算法的空间复杂度是指执行该算法所需的内 存空间,记作
S(n) = O(f (n))
S(n)除了跟存储程序的指令、常数、变量
和输入数据的空间大小有关外,还跟存储一 些为实现计算所需信息的辅助空间的大小有 关。
2020/7/16
大学计算机基础
24
算法的伪代码表示法
用介于自然语言和计算机语言之间的文字和符号来 描述算法
伪代码描述50!:
1→t 2→i while i<=50 {t*i →t i+1 →i } print t
2020/7/16
大学计算机基础
15
算法的计算机语言表示法
必须严格遵守计算机语言的语法规则
计算机语言(C语言)描述50!:
算法的流程图表示法
• 传统流程图
顺序结构、选择结构和循环结构流程图
开始
例如:50!的流程图 t=1
i=2 t=t×i
i=i+1
Y i<=50 N 输出t
2020/7/16
结束
大学计算机基础
12
➢N-S图:三种控制结构的N-S图
50!的N-S图
1=>t 2=>i i×t =>t
i+1 =>i 直到i>50 输出结果
重复执行 多次, 循环结构
3、循环结构
例3:求出50!的算法
设t为被乘数,i为乘数
s1:使t=1
s2:使i=2
s3:t×i→t
为下一次乘法做准备
s4:i+1 →i
s5:当i≤50时转,去执行s3
s6: 输出t的值
顺序结构、选择结构、循环结构是表示一 个算法的基本结构。
由以上3种基本结构组成的算法,称为“结 构化”的算法,可以解决任何复杂的问题。
•递推法:
从已知的初始条件出发,逐次推出所要求的各中间结果和最 后结果。
•递归法:
将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐 层分解的过程,实际上并没有对问题进行求解,而只是当解决了 最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综 合,这就是递归的基本思想。
•回溯法:
通过对问题的分析,找出一个解决问题的线索,然后沿着这个线 索逐步试探,若试探成功,就得到问题的解,若试探失败,就逐 步回退,换别的路线再逐步试探。
2020/7/16
大学计算机基础
20
• 算法的时间复杂度还跟问题的输入数据有关,所以算
法的时间复杂度可以用两种形式表达:
①平均时间复杂度
②最坏情况时间复杂度
① 平均时间复杂度
• 平均时间复杂度能够计算出所有输入对应
的算法时间复杂度的平均值。
• 若用t(x)表示输入为x时的算法时间复杂
度,用E(x)表示出现输入x的数学期望, 则算法平均时间复杂度A(n)可以表示为:
2020/7/16
大学计算机基础
7
§4.3 算法的基本特征
1) 有穷性 算法中的步骤是有限的
2) 可行性 算法中的每一个步骤必须是可执行的
3) 确定性 算法中的每一个步骤必须是含义确切的
4) 有零个或多个输入 5) 有一个或多个输出
§4.3 算法的表示方法
• 自然语言 • 流程图 • 伪代码 • 计算机编程语言
大学计算机算法基础课件
§4.1 算法基本概念
1.算法的概念
为解决一个问题而采取的方法和步骤,称为算法。 用计算机来解决问题的方法和步骤,称为计算机
算法。分为数值运算算法和非数值运算算法。
2020/7/16
大学计算机基础
2
§4.2 算法的组成要素
一个算法含有两大要素:
• 操作步骤:对于计算机算法而言,包括组
成算法的各条指令,也就是对数据的运算 和操作。
• 控制结构:控制算法中各操作步骤地执行
顺序。通常有三种结构:
• 顺序结构 • 选择结构 • 循环结构
控制结构及算法举例
1、顺序结构: 例1:求圆的面积的算法 设r表示圆的半径,s表示圆的面积 步骤1:输入半径r的值 步骤2:s=3.14 ×r ×r 步骤3:输出s的值