[计算机软件及应用]算法及其描述PPT课件
合集下载
第2章算法及其描述.ppt

2.2.1 流程图及其分类
1. 传统流程图
基本图件 起止框
处理框
判断框 输入/出框
流程线
Ahead Institute of Software and Technology
三种基本结构(1966年,Bohra和Jacopini提出) (1)顺序结构 (2)选择(分
C
C
顺序结构
二路分支结构
1)类 Pascal 伪代码 简洁、易实现、不直观
常用语:BEGIN END IF…ELSE FOR WHILE DO ….
Ahead Institute of Software and Technology
例如:求任意两个数 a 和 b 的和 算法: 1)输入 a 和 b
2)计算 a + b,结果存入 sum 3)打印 sum 用伪代码表示:
3524578 f1=f15+70f22;887 9227465 14930352
24157817 f2=3f29+08f18;169 63245986 102334155
}
}
例 判断m是否素数
Ahead Institute of Software and Technology
读入m
k=m i=2
当i≤k
真 m被i整除
假
用break 结束循环
i=i+1
真
i≥k+1
假
输出:m”是素数”输出:m”不是素数”
/*c5_13.c*/ #include <stdio.h> #include <math.h> main() { int m,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++)
认识算法ppt课件

03
常见算法介绍
排序算法
冒泡排序
通过重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过 来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
选择排序
在未排序的序列中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩 余未排序的元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推 ,直到所有元素均排序完毕。
哈希搜索
通过哈希函数将关键字转换成数组下 标,然后直接访问该下标元素。如果 下标位置上的元素就是所查找的元素 ,则搜索成功;否则搜索失败。
图算法
Dijkstra算法
用于解决单源最短路径问题。它是一种贪心算法,按照路径长度从小到大的顺序生成最 短路径。
Floyd-Warshall算法
用于解决所有节点对之间的最短路径问题。它通过动态规划的思想,将问题分解为更小 的子问题并逐步求解。
算法表示
可以使用自然语言、伪代 码、流程图等多种方式表 示。
算法在计算机科学中的地位
算法是计算机科学的核心
01
计算机程序本质上是一组算法步骤,用于实现特定的功能或解
决特定的问题。
算法是计算机科学研究的重要领域
02
算法研究涉及理论计算机科学、数据结构、计算几何等多个领
域,是计算机科学领域的重要分支。
认识算法ppt课件
• 算法的定义与重要性 • 算法的分类与特点 • 常见算法介绍 • 算法设计与分析 • 算法在实际应用中的挑战与解决方
案
01
算法的定义与重要性
算法的基本概念
01
02
03
算法定义
算法是一组明确、有序的 步骤,用点
计算机软件及应用PPT课件

程序设计语言有三类:机器语言、汇编语言、高级语言。
任务2 了解知识产权与版权保护
1. 软件的版权
维护版权是通过法律的形式保护创造性工作的原始作 者权利的一种方法。软件开发者拥有软件版权。
2. 软件许可证
软件的许可证是指规定计算机软件(程序)使用者权 利的法律合同,又称许可协议。按商业软件、共享软件、 免费软件、公共领域软件等不同类型的软件,对它们的分 发规定了不同的协议。
第1章 计算机基础知识
1.4 计算机软件及应用
❖ 认识软件 ❖ 了解知识产权与版权保护 ❖ 体验与探索
任务1
认识软件
1. 计算机软件分为系统软件和应用软件
系统软件主要用于计算机系统内部的管理、控制和维 护计算机的各种资源的软件,如Windows XP操作系统及其 中的设备驱动程序等。
应用软件指向计算机提供相应指令并实现某种用途的 软件,它们是为解决各种实际问题而专门设计的程序。现 在许多软件已经趋于标准化和模块化,如各种财务软件、 教学软件、图形软件都是组合的应用程序软件包。
体验与探索
❖
操作步骤说明:
体
搜集常用软件后,了解各软件的类型(商
验
业软件、共享软件、免费软件),要注意软件
:
版权。
搜
集
常
用
软
件
体验与探索
❖
在网上搜索我国保护知识产权颁布了法律、
探
法规文件,然后整理成文件名称列表并填入下表
索
:
中。
搜
索
知
序号 文件名称
文件号
内容摘要
识
12 3
4
产 权
保
护
法
律
文
件
任务2 了解知识产权与版权保护
1. 软件的版权
维护版权是通过法律的形式保护创造性工作的原始作 者权利的一种方法。软件开发者拥有软件版权。
2. 软件许可证
软件的许可证是指规定计算机软件(程序)使用者权 利的法律合同,又称许可协议。按商业软件、共享软件、 免费软件、公共领域软件等不同类型的软件,对它们的分 发规定了不同的协议。
第1章 计算机基础知识
1.4 计算机软件及应用
❖ 认识软件 ❖ 了解知识产权与版权保护 ❖ 体验与探索
任务1
认识软件
1. 计算机软件分为系统软件和应用软件
系统软件主要用于计算机系统内部的管理、控制和维 护计算机的各种资源的软件,如Windows XP操作系统及其 中的设备驱动程序等。
应用软件指向计算机提供相应指令并实现某种用途的 软件,它们是为解决各种实际问题而专门设计的程序。现 在许多软件已经趋于标准化和模块化,如各种财务软件、 教学软件、图形软件都是组合的应用程序软件包。
体验与探索
❖
操作步骤说明:
体
搜集常用软件后,了解各软件的类型(商
验
业软件、共享软件、免费软件),要注意软件
:
版权。
搜
集
常
用
软
件
体验与探索
❖
在网上搜索我国保护知识产权颁布了法律、
探
法规文件,然后整理成文件名称列表并填入下表
索
:
中。
搜
索
知
序号 文件名称
文件号
内容摘要
识
12 3
4
产 权
保
护
法
律
文
件
【课件】算法的概念及描述课件 2022—2023学年人教_中图版高中信息技术必修1

2.2 算法的概念及描述
任务三:当堂检测
7. 下列结构中,不属于算法的三种控制结构的是___B___。 [单选题] A. 顺序结构 B. 组合结构 C. 循环结构 D. 选择结构
8. 计算机能根据程序的要求将某一段程序执行若干次,这种结构在 程序设计中称为___C___。 [单选题]
A. 顺序结构 B. 分支结构 C. 循环结构 D. 选择结构
2.2 算法的概念及描述
任务三:当堂检测
1. 算法的有穷性是指 A 。 [单选题] A. 算法程序的运行时间是有限的 B. 算法程序所处理的数据量是有限的 C. 算法程序的长度是有限的 D. 算法只能被有限的用户使用
2. 下列关于算法的描述中,不正确的是 A 。 [单选题] A. 一个正确的算法至少要有一个输入 B. 算法的改进,在很大程度上推进了计算机科学与技术
2.2 算法的概念及描述
任务一:用流程图描述算法
流程图中常用的符号及其功能
2.2 算法的概念及描述
任务一:用流程图描述算法
手工纸 上绘制
在线绘制 流程图的
网站
绘制流 程图的
工具
文本编 辑软件
专门绘制 流程图的
软件
2.2 算法的概念及描述
任务一:用流程图描述算法
算法的三种基本控制结构用流程图表示如下:
任务一:合作探究、问题归纳
问题1: 小明乘车从A站出发到达B站可以有哪些路线?哪条路线
是最佳乘车路线?理由是什么?
2.2 算法的概念及描述
任务一:合作探究、问题归纳
问题2: 根据教材第48页的讲解,你能否总结出求两个数的最大
公约数的方法?并尝试任意给两个数,求出最大公约数。
算法,简单地 说就是解决一 个特定问题的 方法与步骤。
算法及其描述方法ppt课件

算法的概念
➢ 什么是算法? 算法就是解决问题 的方法和步骤。
篮球比赛是根据运动队在规定的比赛 时间里 得分多 少来决 定胜负 的,因 此,篮 球比赛 的计时 计分系 统是一 种得分 类型的 系统
特点
算法的特点
有穷性: 执行有限步,每一步执行时间是有限的。 确定性: 每一步都有确切的含义。 有输入: 有零个或多个输入。 有输出: 算法运行完后至少产生一个输出。 可行性: 原则上能精确运行,用纸和笔做有限次
♠ 开始
自
第1步:1+2=3 第2步: 3+3=6
然
第3步:
6+4=10
语
第99步:
♠ 结束
……
言
4950+100=5050
描
述
优点:通俗易懂,符合我们的表达习惯 缺点:书写较烦、缺乏直观性和简洁性
篮球比赛是根据运动队在规定的比赛 时间里 得分多 少来决 定胜负 的,因 此,篮 球比赛 的计时 计分系 统是一 种得分 类型的 系统
有输入 有输出 有穷性 确定性 有效性
自然 语言 流程图 伪代码
篮球比赛是根据运动队在规定的比赛 时间里 得分多 少来决 定胜负 的,因 此,篮 球比赛 的计时 计分系 统是一 种得分 类型的 系统
优点:通俗易懂
算 法
缺点:没有流程图直观
篮球比赛是根据运动队在规定的比赛 时间里 得分多 少来决 定胜负 的,因 此,篮 球比赛 的计时 计分系 统是一 种得分 类型的 系统
比一比
自然语言描述 流程图描述 伪代码描述 通俗易懂 直观清晰 繁琐程度 是否容易修改
篮球比赛是根据运动队在规定的比赛 时间里 得分多 少来决 定胜负 的,因 此,篮 球比赛 的计时 计分系 统是一 种得分 类型的 系统
算法的概念及描述课件高一信息技术浙教版(2019)必修一(15PPT)

print(i,":",things[i]) #显示停留10秒 time.sleep(10) #清屏 print("\n"*30)
顺序结构:按语句出现的顺序依次执行
历年真题
1.以下流程图描述的算法,输出结果是( B ) A、8 8 8 B、24 40 72 C、24 40 48 D、24 24 24
环节
任务
出题
计算机姜编号和物品 显示屏幕10秒钟
答题 输出结果
随机出题 参与者回答编号 判断回答是否正确
显示答对题数 显示游戏结束
用自然语言描述算法
1.显示游戏规则 2.显示物品以及编号 3.显示停留10秒 4.清屏
5.随机出题 6.输入编码 7.重复5和6步骤5次,并统计答题数目
8.输出答对题目的数量 9.输出游戏结束
任务二
将以上用自然语言描述的算法,用流程图表示出来
出题
做题
开始
顺
显示游戏规则
序
结
显示物品及编码
构
显示停留10秒
是否做
是
满5道题 选择结构
循 环
否
出题
结
答题
构
否
判断对
错
清屏
答对题数+1
显示结果
答对题 的数目
游戏结 束
任务三:
思考可否将停留10秒和清屏互换呢?
import random import time #显示游戏规则 print("你好,现在你有10秒的时间记忆下列物品及其编号") #显示物品名称与编号 things=["苹果","香蕉","铁观音","毛笔","笔记本","柚子","猴子","啤酒","新疆","天安门"] for i in range(10):
顺序结构:按语句出现的顺序依次执行
历年真题
1.以下流程图描述的算法,输出结果是( B ) A、8 8 8 B、24 40 72 C、24 40 48 D、24 24 24
环节
任务
出题
计算机姜编号和物品 显示屏幕10秒钟
答题 输出结果
随机出题 参与者回答编号 判断回答是否正确
显示答对题数 显示游戏结束
用自然语言描述算法
1.显示游戏规则 2.显示物品以及编号 3.显示停留10秒 4.清屏
5.随机出题 6.输入编码 7.重复5和6步骤5次,并统计答题数目
8.输出答对题目的数量 9.输出游戏结束
任务二
将以上用自然语言描述的算法,用流程图表示出来
出题
做题
开始
顺
显示游戏规则
序
结
显示物品及编码
构
显示停留10秒
是否做
是
满5道题 选择结构
循 环
否
出题
结
答题
构
否
判断对
错
清屏
答对题数+1
显示结果
答对题 的数目
游戏结 束
任务三:
思考可否将停留10秒和清屏互换呢?
import random import time #显示游戏规则 print("你好,现在你有10秒的时间记忆下列物品及其编号") #显示物品名称与编号 things=["苹果","香蕉","铁观音","毛笔","笔记本","柚子","猴子","啤酒","新疆","天安门"] for i in range(10):
[计算机软件及应用]算法及其描述PPT课件
![[计算机软件及应用]算法及其描述PPT课件](https://img.taocdn.com/s3/m/872eef576bd97f192279e971.png)
r=a%b;
while(r!=0)
{ a=b; b=r; r=a%b; }
printf("=%ld\n",b); // 输出求解结果
}
-
27
1.3.2 结构化程序设计
任何简单或复杂的算法都可以由顺序结构、 选择结构和循环结构这三种基本结构组合而成。 所以,顺序结构、选择结构和循环结构被称为 程序设计的三种基本结构,也是结构化程序设 计必须采用的结构。
-
32
第1章作业
习题1: 1, 2, 3, 4, 5 参考附录A 部分习题求解提要
第1章上机 (VC++6.0)
参见上附机录通B 过在本V章C+例+61.-06环,1境-7,1-8; 下运上行机C通程过序习方题法简1-介4: 输出n=15,n=21的对称方阵;
上机通过习题 1-5,输出:
n=
个“1”时能被2011整除;
for(j=1;j<=k;j++)
{ x=k+j;
s=s+x;}
每个赋值语句执行频率为n(n+1)/2, 该算法
的时间复杂度为:O(n^2)
-
20
一个算法的运行时间,与问题的规模相关,也 与输入的数据相关。
例如对给定的n个整数a(1),a(2),…,a(n) 排序: for(i=1;i<=n−1;i++) for(j=i+1;j<=n;j++) if(a[i]>a[j]){ h=a[i];a[i]=a[j];a[j]=h;}
算法是程序的核心。程序是某一算法用计算
机程序设计语言的具体实现。
-
25
算法及算法的描述方法ppt课件

k能被400整除? Y
输出k是闰年
N
N 输出k不是闰年
结束
a
C
b
输出k不是闰年
A
成立
p
不成立
B
C
精品课件
判断闰年的流程图
开始
A
输入一个年份值k
结构不好!
B
N
k能被4整除?
Y
k能被100整除?
Y
k能被400整除?
Y
输出k是闰年
N
N
输出k不是闰年
a A B b
无法划分基 本单元!
结束
精品课件
求最大公约数流程图
其他(处理、语句)
➢ 赋值: ← ,例如 i ← 1 ➢ 如果p成立则A否则B: if p then A else B ➢ 当p成立时,则A:
» while p do A » do A while p ➢ 输入和输出(打印) :input、print ➢ 基本块起、止符号: {、 } ➢ 算法开始和结束:BEGIN、END
n的因子,说明n不是素数;否则,n是素数。
精品课件
素性判别
K ← K+1
开始 输入n的值
K← 2
Y
K不能整除n?
N N
K等于n?
Y
输出n是素数
输出n不是素数
结束
精品课件
求最大公约数
设有两个正整数m和n,如何求其最大公约数? 有多种方法,例如 求解速度最快的方法是辗转相除法。
辗转相除法(欧几里得算法): 给定两个正整数m和n,求它们的最大公约数(公因子)。 步骤1:【求余数】以n除m并令r为所得余数(0≤r<n) 步骤2:【余数为0?】若r=0,算法结束;n即为答案 步骤3:【互换】置m←n, n←r,转向步骤1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小组讨论与基本案例相关的拓展与引申案例求解, 为“课程设计”作准备。
-
2
上机实践:
• 上机环境:VC++6.0 • 上机通过每章指定的案例求解程序与习题 • 按要求填写实验报告
学习建议:
• 培养案例求解兴趣
• 自觉完成布置的作业 学会归纳、总结和提炼; • 加深对算法应用的理解
自觉调整学习状态: • 善于变通、拓展与改进
一条语句的数量级即执行它的频数,一个算 法的数量级是指它所有语句执行频数之和。
在分析算法时,隐藏细节的数学表示方法为 大写字母“O”记法,它可以帮助我们简化算 法复杂度计算的许多细节,提取主要成分。
-
15
算法的执行频数的数量级直接决定算 法的时间复杂度。
-
16
例1-3 试计算下三个程序段的时间复杂度
设整数竖式除法每次试商的被除数为a, 除数为 2011,每次试商的余数为c。
循环以余数c≠0作为循环条件。循环外赋初值: c=1111,n=4或c=111,n=3等等。
设置竖式除法模拟循环,循环中被除数 a=c*10+1,试商余数c=a%2011。
若余数c=0,结束循环,输出结果;
否则,计算a=c*10+1为下一轮运算的被除数, 继续试商。每商一位,统计被除数中“1”的个
(2) 控制结构:顺序结构,选择结构,循环 结构,模块调用。
(3) 数据结构:数据之间的逻辑关系。
-
6
2. 算法的基本特征
一个算法由有限条可完全机械地执 行的、有确定结果的指令组成,具 有以下特性:
(1) 确定性 (2) 可行性 (3) 有穷性 (4) 算法有零个或多个输入 (5) 算法有一个或多个输出
1.1.1 算法定义
算法是计算机解决问题的过程,是解决某一 问题的运算序列。或者说算法是问题求解过 程的运算描述。
当面临某一问题时,需要找到用计算机解决 这个问题的方法与步骤,算法就是解决这个 问题的方法与步骤的描述。
-
5
1. 算法的三要素
算法由操作、控制结构与数据结构 三者组成。
(1) 操作:算术运算,关系运算,逻辑运算; 输入、输出、赋值等操作。
{ a=b; b=r; r=a%b; }
print(b);
// 输出的简略表示
-
9
例1-2 由n个1组成的整数能被2011整 除,求n至少为多大?
(1) 试模拟整数竖式除法:
-
10
可以证明,n是存在的,且不大于2011,因而以 上竖式运算总会停止。当除运算的余数为“0” 时,数一数被除数中有多少个“1”即可。
注重算法设计,提高解决实际案例的能力。
-
3
第 1 章 算法与程序设计概述
➢教学要求
➢ 了解算法概念、算法特征及算法的描述 ➢ 建立算法的复杂性概念 ➢ 掌握结构化程序设计的基本方法
➢本章重点
➢ 应用 c 语言描述算法 ➢ 掌握算法时间复杂度分析
-
4
1.1 算法及其描述
算法是程序设计的基础,是计算机科学的核心。
实验对比分析很简单,两个算法相互比较求解时 间。
数学方法能在严密的逻辑推理基础上判断算法的 优劣。
在算法分析中,我们往往采用能近似表达性能的 方法来展示某个算法的性能指标。
-
14
一个算法的时间复杂度是指算法运行所需的时 间。
一个算法的运行时间取决于算法所需执行的语 句(运算)的多少。
算法的时间复杂度通常用该算法执行的总语句 (运算)的数量级决定。
总的执行频数为:
-
18
时间复杂度符号O的两个定理:
-
19
-
7
1.1.2 算法描述
(1)一个问题可以设计不同的算法来求解;
同一个算法可以采用不同的形式来表述。
(2)描述算法可以有:自然语言方式、流程 图方式、伪代码方式、计算机语言表示方
式与表格方式等。
(3)当一个算法使用计算机程序设计语言描 述时,就是程序。
本书采用C语言与自然语言相结合来描述算 法。
-
例1-3 试计算下面三个程序段的执行频数
(3) for(t=1,k=1;k<=n;k++)
{ t=t*2;
for(j=1;j<=t;j++)
s=s+j; }
“t=1”与“k=1”各执行1次;“k<=n”与“k++”各执 行n次;“t=t*2”执行n次;“j=1”执行n次; “j<=t”、“j++”与内循环的赋值语句“s=s+j”各执 行频数为:
8
例1-1 求两个整数a,b的最大公约 数的欧几里德算法
(1) 数 a 除以 b 得余数 r;若r=0,则b为 所求的最大公约数。
(2) 若 r≠0,以b为a,r为b,继续(1).
欧几里德算法具体描述如下:
input(a,b); // 输入的简略表示
r=a%b;
while(r!=0) // 实施辗转相除
(1) x=x+1; s=s+x;
2个语句各执行1次,共执行2次。时间复杂度为O(1)
(2) for(k=1;k<=n;k++) { x=x+y; y=x+y; s=x+y; }
“k=1”执行1次;“k<=n”与“k++”各执行n次;3个赋值语句,每个 赋值语句各执行n次;共执行5n+1次.- 时间复杂度为O(n). 17
计算机常用算法与 程序设计案例教程
杨克昌
请用PowerPoint 2003播
放
-
1
学时安排:36(讲授)+18(上机)
( 可根据实际教学计划进行调整)
课堂讲授 :
各常用算法的概念与设计要点。
重点讲授应用算法设计求解基本的典型案例,并 通过相关程序,引导设计变通。
在基本案例引导下自学相关联案例求解。
数的变量n增1。
-
11
(2) 竖式除法模拟描述
c=1111;n=4; // 变量c与n赋初值
while(c!=0) // 模拟竖式除法
{ a=c*10+1;
c=a%2011;
n=n+1;
// 每试商一位n增1
}
print(n);
// 输出的简略表示
-
12
1.2 算法的复杂性分析
算法的复杂性越高,所需的计算机资源 越多。
最重要的计算机资源是时间资源与空间 资源。
需要计算机时间资源的量称为时间复杂 度,需要计算机空间资源的量称为空间 复杂度。
时间复杂度与空间复杂度集中反映算法 的效率。
-
13
1.2.1 时间复杂度
要想充分理解算法并有效地应用算法求解实际案 例,关键是对算法的分析。通常我们可以利用实
验对比方法、数学方法来分析算法。
-
2
上机实践:
• 上机环境:VC++6.0 • 上机通过每章指定的案例求解程序与习题 • 按要求填写实验报告
学习建议:
• 培养案例求解兴趣
• 自觉完成布置的作业 学会归纳、总结和提炼; • 加深对算法应用的理解
自觉调整学习状态: • 善于变通、拓展与改进
一条语句的数量级即执行它的频数,一个算 法的数量级是指它所有语句执行频数之和。
在分析算法时,隐藏细节的数学表示方法为 大写字母“O”记法,它可以帮助我们简化算 法复杂度计算的许多细节,提取主要成分。
-
15
算法的执行频数的数量级直接决定算 法的时间复杂度。
-
16
例1-3 试计算下三个程序段的时间复杂度
设整数竖式除法每次试商的被除数为a, 除数为 2011,每次试商的余数为c。
循环以余数c≠0作为循环条件。循环外赋初值: c=1111,n=4或c=111,n=3等等。
设置竖式除法模拟循环,循环中被除数 a=c*10+1,试商余数c=a%2011。
若余数c=0,结束循环,输出结果;
否则,计算a=c*10+1为下一轮运算的被除数, 继续试商。每商一位,统计被除数中“1”的个
(2) 控制结构:顺序结构,选择结构,循环 结构,模块调用。
(3) 数据结构:数据之间的逻辑关系。
-
6
2. 算法的基本特征
一个算法由有限条可完全机械地执 行的、有确定结果的指令组成,具 有以下特性:
(1) 确定性 (2) 可行性 (3) 有穷性 (4) 算法有零个或多个输入 (5) 算法有一个或多个输出
1.1.1 算法定义
算法是计算机解决问题的过程,是解决某一 问题的运算序列。或者说算法是问题求解过 程的运算描述。
当面临某一问题时,需要找到用计算机解决 这个问题的方法与步骤,算法就是解决这个 问题的方法与步骤的描述。
-
5
1. 算法的三要素
算法由操作、控制结构与数据结构 三者组成。
(1) 操作:算术运算,关系运算,逻辑运算; 输入、输出、赋值等操作。
{ a=b; b=r; r=a%b; }
print(b);
// 输出的简略表示
-
9
例1-2 由n个1组成的整数能被2011整 除,求n至少为多大?
(1) 试模拟整数竖式除法:
-
10
可以证明,n是存在的,且不大于2011,因而以 上竖式运算总会停止。当除运算的余数为“0” 时,数一数被除数中有多少个“1”即可。
注重算法设计,提高解决实际案例的能力。
-
3
第 1 章 算法与程序设计概述
➢教学要求
➢ 了解算法概念、算法特征及算法的描述 ➢ 建立算法的复杂性概念 ➢ 掌握结构化程序设计的基本方法
➢本章重点
➢ 应用 c 语言描述算法 ➢ 掌握算法时间复杂度分析
-
4
1.1 算法及其描述
算法是程序设计的基础,是计算机科学的核心。
实验对比分析很简单,两个算法相互比较求解时 间。
数学方法能在严密的逻辑推理基础上判断算法的 优劣。
在算法分析中,我们往往采用能近似表达性能的 方法来展示某个算法的性能指标。
-
14
一个算法的时间复杂度是指算法运行所需的时 间。
一个算法的运行时间取决于算法所需执行的语 句(运算)的多少。
算法的时间复杂度通常用该算法执行的总语句 (运算)的数量级决定。
总的执行频数为:
-
18
时间复杂度符号O的两个定理:
-
19
-
7
1.1.2 算法描述
(1)一个问题可以设计不同的算法来求解;
同一个算法可以采用不同的形式来表述。
(2)描述算法可以有:自然语言方式、流程 图方式、伪代码方式、计算机语言表示方
式与表格方式等。
(3)当一个算法使用计算机程序设计语言描 述时,就是程序。
本书采用C语言与自然语言相结合来描述算 法。
-
例1-3 试计算下面三个程序段的执行频数
(3) for(t=1,k=1;k<=n;k++)
{ t=t*2;
for(j=1;j<=t;j++)
s=s+j; }
“t=1”与“k=1”各执行1次;“k<=n”与“k++”各执 行n次;“t=t*2”执行n次;“j=1”执行n次; “j<=t”、“j++”与内循环的赋值语句“s=s+j”各执 行频数为:
8
例1-1 求两个整数a,b的最大公约 数的欧几里德算法
(1) 数 a 除以 b 得余数 r;若r=0,则b为 所求的最大公约数。
(2) 若 r≠0,以b为a,r为b,继续(1).
欧几里德算法具体描述如下:
input(a,b); // 输入的简略表示
r=a%b;
while(r!=0) // 实施辗转相除
(1) x=x+1; s=s+x;
2个语句各执行1次,共执行2次。时间复杂度为O(1)
(2) for(k=1;k<=n;k++) { x=x+y; y=x+y; s=x+y; }
“k=1”执行1次;“k<=n”与“k++”各执行n次;3个赋值语句,每个 赋值语句各执行n次;共执行5n+1次.- 时间复杂度为O(n). 17
计算机常用算法与 程序设计案例教程
杨克昌
请用PowerPoint 2003播
放
-
1
学时安排:36(讲授)+18(上机)
( 可根据实际教学计划进行调整)
课堂讲授 :
各常用算法的概念与设计要点。
重点讲授应用算法设计求解基本的典型案例,并 通过相关程序,引导设计变通。
在基本案例引导下自学相关联案例求解。
数的变量n增1。
-
11
(2) 竖式除法模拟描述
c=1111;n=4; // 变量c与n赋初值
while(c!=0) // 模拟竖式除法
{ a=c*10+1;
c=a%2011;
n=n+1;
// 每试商一位n增1
}
print(n);
// 输出的简略表示
-
12
1.2 算法的复杂性分析
算法的复杂性越高,所需的计算机资源 越多。
最重要的计算机资源是时间资源与空间 资源。
需要计算机时间资源的量称为时间复杂 度,需要计算机空间资源的量称为空间 复杂度。
时间复杂度与空间复杂度集中反映算法 的效率。
-
13
1.2.1 时间复杂度
要想充分理解算法并有效地应用算法求解实际案 例,关键是对算法的分析。通常我们可以利用实
验对比方法、数学方法来分析算法。