算法和算法的特征
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设定两个正整数为m和n,求它们的最大公 约数的步骤为: (1)以m除以n,令所得的余数为r。 (2)若r=0,则输出结果n,算法结束;否 则继续步骤(3)。 (3)令m=n,n=r,并返回步骤(1)继续 进行。
实践
设给定两个正整数m=112和n=64,利用辗 转相除法,求它们的最大公约数。 算法如下: (1)112除以64,余数为_; (2)_除以_,余数为_; (3)_除以_,余数为_;
问题
1-2:鸡兔同笼问题。一个笼子里有鸡和兔, 现在只知道里面一共有35个头,94只脚, 鸡和兔各有多少只?试设计一个求解的算 法,并用自然语言描述出来。
(1)分析问题
设所求的鸡数是x,兔数是y,已知笼子里的头 数是a,脚数是b,依题意,得到如下方程组:
x+y=a 2x+4y=b 解方程组得:x=2a-b/2,y=b/2-a
1.2.2 算法的描述
人的思想要用语言来表达。而算法则是人 求解问题的思想方法,是对解题过程的精 确描述,同样也需要用语言来表示。
表示算法的语言,主要有 自然语言、流程图、伪代码等。
1、用自然语言描述算法
前面关于欧几里得算法以及算法实例的描 述,使用的都是用自然语言。 自然语言是人们日常所用的语言,如汉语、 英语、德语等。使用这些语言不用专门训 练,所描述的算法也通俗易懂。
答案
(1)112除以64,余数为(48); (2)(64)除以(48),余数为(16); (3)(48)除以(16),余数为(0); 答:112和64的最大公约数为(16)。
2.算法的特征
(1)输入。一个算法有零个或多个输入。 (2)确定性。算法的每一步骤必须要确切定义。 (3)有穷性。一个算法在执行有穷步之后必须结束。 (4)输出。算法有一个或多个输出。 (5)能行性。算法中有待执行的运算和操作必须是相 当基本的,换句话说,它们都是能够精确地进行的。
表1-6两个程序的效率比较
指标
运行结果 运行时间 通用性
用辗转相除法
最大公约数=5 较短 较好
用穷举法
最大公约数=5 较长 较差
1.2.3 算法在解决问题中的地位和作用
由此看来,在运用计算机程序解决问题的 过程中,算法设计有着举足轻重的地位和 作用,算法是程序设计的核心,也是程序 设计的灵魂。算法的好坏,直接影响着程 序的通用性和有效性,影响着解决问题的 效率。
1-2算法和算法的描述
赵圣川
1.2.1 算法
1、算法的概念 在数学课程里,我们学习了算法的基本思 想和初步认识,知道了是在有限步骤内求 解某一问题所使用的一组被定义明确的规 则。通俗地说,算法就是用计算机求解某 一问题的方法,是能被机械执行的动作或 指令的有穷集合。
欧几里得阐述了关于求两个最大公约数的 过程,这就是著名的欧几里得算法——辗 转相除法。
(2)设计算法
①输入a和b的值; ②求x=2a-b/2; ③求y=b/2-a; ④输出x,y的值; ⑤结束。
问题1-3:设计一个算法,求出100以内能被3整除的所 有正整数。 (1)分析问题。 设能被3整除的数为I,令I=1,2,3,…,100, 如果I是能被3整除的数,则输出I,否则,检查 下一个I,直到I=100为止。 (2)设计算法。 ①令I=1; ②如果I能被3整除,则输出I ; ③I=I+1; ④如果I≤100,则返回第② 步; ⑤结束。
下面给出用辗转相除法去求两个最大 公约数的伪代码算法描述。
INPUT m,n R=m mod n DO WHILE r≠0 m=n n=r LOOP PRINT n
1.2.3 算法在解决问题中的地位和作用
在运用计算机程序解决问题的过程中,算法 设计是一个重要环节,不同的算法会产生 不同的运行效果。 求两个整数的最大公约数,有很多不同的 算法。以下是两位同学用不同的算法设计 的9147485和5147480的最大公约数的两个 程序。
同学甲的算法:
Private Sub Command1_Click() m = 9147485 n = 5147480 r = m Mod n Do While r <> 0 m=n n=r r = m Mod n Loop Print "最大公约数="; n End Sub
同学乙的算法
Private Sub Command1_Click() m = 9147485 n = 5147480 i=m Do While m mod i <> 0 or n mod i<>0 i=i-1 Loop Print "最大公约数="; i End Sub
1-2的算法流程图
开始
输入正整数m和n
r=m除以n的余数
r=0百度文库
M=n,n=r
输出n的值
结束
1-3的算法流程图
开始
输入a和b
x=2a-b/2
y=b/2-a
输出x,y的值
结束
1-2的算法流程图
开始
I=1 是 I能被3整除 是 输出I的值
否
I=I+1
I≤100
结束
3、用伪代码描述算法
伪代码是介于自然语言和计算机语言之间的文字 和符号来描述算法的工具。它不用图形符号,因 此,书写方便,格式紧凑,易于理解,便于向计 算机程序设计语言过渡。 伪代码描述算法回避了程序设计语言严格、烦琐 的书写格式,它不需要让计算机接收,又吸取了 程序设计语言代码表达的精炼,容易转换为程序 设计语言。但由于语言的种类繁多,伪代码的语 句不容易规范,有时会产生误解。
然而,用自然语言描述算法也存在明 显的缺点:
(1)由于自然语言的歧义性,容易导致算 法执行的不确定性。 (2)自然语言的语句一般较长,从而导致 了用自然语言描述的算法太长。 (3)由于自然语言表示是按照步骤的标号 顺序执行的,因此,当一个算法中循环和 分支多时就很难清晰地表示出来。 (4)自然语言表示的算法不便翻译成计算 机设计程序。
2、用流程图描述算法
在数学课堂里,我们学习了用程序框图来 描述算法。在程序框图中流程图是描述算 法的常用工具,它由表1-4所列的一组图形 符号来表示算法。
表1-4 流程图的基本图形及其功能 图形 名称
开始/结束框
输入/输出框 处理框 判断框 流程线 连接点
功能
表示算法的开始或结束
表示算法中变量的输入或输出 表示算法中变量的计算与赋值 表示算法中的条件判断 表示算法中的流向 表示算法中的连接
实践
设给定两个正整数m=112和n=64,利用辗 转相除法,求它们的最大公约数。 算法如下: (1)112除以64,余数为_; (2)_除以_,余数为_; (3)_除以_,余数为_;
问题
1-2:鸡兔同笼问题。一个笼子里有鸡和兔, 现在只知道里面一共有35个头,94只脚, 鸡和兔各有多少只?试设计一个求解的算 法,并用自然语言描述出来。
(1)分析问题
设所求的鸡数是x,兔数是y,已知笼子里的头 数是a,脚数是b,依题意,得到如下方程组:
x+y=a 2x+4y=b 解方程组得:x=2a-b/2,y=b/2-a
1.2.2 算法的描述
人的思想要用语言来表达。而算法则是人 求解问题的思想方法,是对解题过程的精 确描述,同样也需要用语言来表示。
表示算法的语言,主要有 自然语言、流程图、伪代码等。
1、用自然语言描述算法
前面关于欧几里得算法以及算法实例的描 述,使用的都是用自然语言。 自然语言是人们日常所用的语言,如汉语、 英语、德语等。使用这些语言不用专门训 练,所描述的算法也通俗易懂。
答案
(1)112除以64,余数为(48); (2)(64)除以(48),余数为(16); (3)(48)除以(16),余数为(0); 答:112和64的最大公约数为(16)。
2.算法的特征
(1)输入。一个算法有零个或多个输入。 (2)确定性。算法的每一步骤必须要确切定义。 (3)有穷性。一个算法在执行有穷步之后必须结束。 (4)输出。算法有一个或多个输出。 (5)能行性。算法中有待执行的运算和操作必须是相 当基本的,换句话说,它们都是能够精确地进行的。
表1-6两个程序的效率比较
指标
运行结果 运行时间 通用性
用辗转相除法
最大公约数=5 较短 较好
用穷举法
最大公约数=5 较长 较差
1.2.3 算法在解决问题中的地位和作用
由此看来,在运用计算机程序解决问题的 过程中,算法设计有着举足轻重的地位和 作用,算法是程序设计的核心,也是程序 设计的灵魂。算法的好坏,直接影响着程 序的通用性和有效性,影响着解决问题的 效率。
1-2算法和算法的描述
赵圣川
1.2.1 算法
1、算法的概念 在数学课程里,我们学习了算法的基本思 想和初步认识,知道了是在有限步骤内求 解某一问题所使用的一组被定义明确的规 则。通俗地说,算法就是用计算机求解某 一问题的方法,是能被机械执行的动作或 指令的有穷集合。
欧几里得阐述了关于求两个最大公约数的 过程,这就是著名的欧几里得算法——辗 转相除法。
(2)设计算法
①输入a和b的值; ②求x=2a-b/2; ③求y=b/2-a; ④输出x,y的值; ⑤结束。
问题1-3:设计一个算法,求出100以内能被3整除的所 有正整数。 (1)分析问题。 设能被3整除的数为I,令I=1,2,3,…,100, 如果I是能被3整除的数,则输出I,否则,检查 下一个I,直到I=100为止。 (2)设计算法。 ①令I=1; ②如果I能被3整除,则输出I ; ③I=I+1; ④如果I≤100,则返回第② 步; ⑤结束。
下面给出用辗转相除法去求两个最大 公约数的伪代码算法描述。
INPUT m,n R=m mod n DO WHILE r≠0 m=n n=r LOOP PRINT n
1.2.3 算法在解决问题中的地位和作用
在运用计算机程序解决问题的过程中,算法 设计是一个重要环节,不同的算法会产生 不同的运行效果。 求两个整数的最大公约数,有很多不同的 算法。以下是两位同学用不同的算法设计 的9147485和5147480的最大公约数的两个 程序。
同学甲的算法:
Private Sub Command1_Click() m = 9147485 n = 5147480 r = m Mod n Do While r <> 0 m=n n=r r = m Mod n Loop Print "最大公约数="; n End Sub
同学乙的算法
Private Sub Command1_Click() m = 9147485 n = 5147480 i=m Do While m mod i <> 0 or n mod i<>0 i=i-1 Loop Print "最大公约数="; i End Sub
1-2的算法流程图
开始
输入正整数m和n
r=m除以n的余数
r=0百度文库
M=n,n=r
输出n的值
结束
1-3的算法流程图
开始
输入a和b
x=2a-b/2
y=b/2-a
输出x,y的值
结束
1-2的算法流程图
开始
I=1 是 I能被3整除 是 输出I的值
否
I=I+1
I≤100
结束
3、用伪代码描述算法
伪代码是介于自然语言和计算机语言之间的文字 和符号来描述算法的工具。它不用图形符号,因 此,书写方便,格式紧凑,易于理解,便于向计 算机程序设计语言过渡。 伪代码描述算法回避了程序设计语言严格、烦琐 的书写格式,它不需要让计算机接收,又吸取了 程序设计语言代码表达的精炼,容易转换为程序 设计语言。但由于语言的种类繁多,伪代码的语 句不容易规范,有时会产生误解。
然而,用自然语言描述算法也存在明 显的缺点:
(1)由于自然语言的歧义性,容易导致算 法执行的不确定性。 (2)自然语言的语句一般较长,从而导致 了用自然语言描述的算法太长。 (3)由于自然语言表示是按照步骤的标号 顺序执行的,因此,当一个算法中循环和 分支多时就很难清晰地表示出来。 (4)自然语言表示的算法不便翻译成计算 机设计程序。
2、用流程图描述算法
在数学课堂里,我们学习了用程序框图来 描述算法。在程序框图中流程图是描述算 法的常用工具,它由表1-4所列的一组图形 符号来表示算法。
表1-4 流程图的基本图形及其功能 图形 名称
开始/结束框
输入/输出框 处理框 判断框 流程线 连接点
功能
表示算法的开始或结束
表示算法中变量的输入或输出 表示算法中变量的计算与赋值 表示算法中的条件判断 表示算法中的流向 表示算法中的连接