算法概论PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 1.1 算法与程序 • 1.2 表达算法的抽象机制 • 1.3 描述算法 • 1.4 算法复杂性分析 • 补充面向对象程序设计与java语言(对比
C++)
5
1.1 算法与程序
算法:是满足下述性质的指令序列。
• 输 入:有零个或多个外部量作为算法的输入。 • 输 出:算法产生至少一个量作为输出。 • 确定性:组成算法的每条指令清晰、无歧义。 • 有限性:算法中每条指令的执行次数有限,执行
(3)高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而 所写出来的程序可植性好、重用率高; (4)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短, 程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。
7
1.2 表达算法的抽象机制
2.抽象数据类型
抽象数据类型是算法的一个数据模型连同定义在该模型上 并作为算法构件的一组运算。
[-32768,32767]
11
1.3 描述算法
3.方法
在Java中,执行特定任务的函数或过程统称为方法(methods) 。 例如,java的Math类给出的常见数学计算的方法如下表所示:
方法 abs(x) ceil(x) cos(x) exp(x)
floor(x) log(x)
功能 x的绝对值 不小于x的最小整数 x的余弦 ex
Java对两种数据类型的不同处理方式:
对基本数据类型:在声明一个具有基本数据类型的变量时,自 动建立该数据类型的对象(或称实例)。如:int k;
对非基本数据类型:语句 String s; 并不建立具有数据类型 String的对象,而是建立一个类型String的引用对象, 数据类型为String的对象可用下面的new语句建立。
每条指令的时间也有限。
程序:是算法用某种程序设计语言的具体实现。
程序可以不满足算法的性质(4)即有限性。
6
1.2 表达算法的抽象机制
1.从机器语言到高级语言的抽象
高级程序设计语言的主要好处是:
(1)高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需 要几周时间的培训就可以胜任程序员的工作; (2)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计 出来的程序可读性好,可维护性强,可靠性高;
抽象数据类型带给算法设计的好处有:
(1)算法顶层设计与底层实现分离; (2)算法设计与数据结构设计隔开,允许数据结构自由选择; (3)数据模型和该模型上的运算统一在ADT中,便于空间和时间耗费的折衷; (4)用抽象数据类型表述的算法具有很好的可维护性; (5)算法自然呈现模块化; (6)为自顶向下逐步求精和模块化提供有效途径和工具; (7)算法结构清晰,层次分明,便于算法正确性的证明和复杂性的分析。
(2)包:java程序和类可以包(packages)的形式组织管理。
(3)import语句:在java程序中可用import语句加载所需的包。
例如,import java.io.*;语句加载java.io包。
9
1.3 描述算法
2.Java数据类型
基本数据类型:详见下页表1-1
数据类型
非基本数据类型:如 Byte, Integer, Boolean, String等。
{
return (a+b+Math.abs(a-b))/2;
}
百度文库
(1)方法参数:Java中所有方法的参数均为值参数。上述方法ab中,a和
b
是形式参数,在调用方法时通过实际参数赋值。
(2)方法重载:Java允许方法重载,即允许定义有不同签名的同名方法。
上述方法ab可重载为:
public static double ab(double a, double b)
s = new String(“Welcome”); String s = new String(“Welcome”);
10
1.3 描述算法
类型 boolean byte char double float int long short
表格1-1 Java基本数据类型
缺省值 分配空间(bits)
取值范围
• 算法:algorithm • 必要性:高级项目开发,数学建模,日常
问题的解决,博弈 • 难度:极难 • 主要参考文献 • 《 计算机程序设计艺术》The Art Of
Computer Programming • 《算法导论》Introduction To
Algorithms
第1章 算法引论
本章主要知识点:
false
1
[true,false]
0
8
[-128,127]
\u0000
16
[\u0000,\uFFFF]
0.0
64
±4.9*10-324 ~ ±1.8*10308
0.0
32
±1.4*10-45 ~ ±3.4*1038
0
32
[-2147483648,2147483647]
0
64
±9.2*1017
0
16
{
return (a+b+Math.abs(a-b))/2.0;
} 13
1.3 描述算法
4.异常
Java的异常提供了一种处理错误的方法。当程序发现一个错 误,就引发一个异常,以便在合适地方捕获异常并进行处理。
不大于x的最大整数
x的自然对数
方法 max(x,y) min(x,y) pow(x,y) sin(x)
sqrt(x) tan(x)
功能 x和y中较大者 x和y中较小者 xy
x的正弦
x的平方根
x的正切
12
1.3 描述算法
3.方法
计算表达式 a b a b
2
值的自定义方法ab描述如下:
public static int ab(int a, int b)
算法设计与分析
1
• 第1章 • 第2章 • 第3章 • 第4章 • 第5章 • 第6章
主要内容介绍
算法引论 递归与分治策略 动态规划 贪心算法 回溯法 分支限界法
2
主要内容介绍(续)
• 第7章 概率算法 • 第8章 NP完全性理论 • 第9章 近似算法 • 第10章 算法优化策略
3
算法学习的必要性
8
1.3 描述算法
在本书中,采用Java语言描述算法。
以下,对Java语言的若干重要特性作简要概述。
1.Java程序结构
(1)Java程序的两种类型:应用程序和applet
区别:应用程序的主方法为main,其可在命令行中用命令 语句 java 应用程序名 来执行; applet的主方法为init,其必须嵌入HTML文件,由 Web浏览器或applet阅读器来执行。
C++)
5
1.1 算法与程序
算法:是满足下述性质的指令序列。
• 输 入:有零个或多个外部量作为算法的输入。 • 输 出:算法产生至少一个量作为输出。 • 确定性:组成算法的每条指令清晰、无歧义。 • 有限性:算法中每条指令的执行次数有限,执行
(3)高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而 所写出来的程序可植性好、重用率高; (4)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短, 程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。
7
1.2 表达算法的抽象机制
2.抽象数据类型
抽象数据类型是算法的一个数据模型连同定义在该模型上 并作为算法构件的一组运算。
[-32768,32767]
11
1.3 描述算法
3.方法
在Java中,执行特定任务的函数或过程统称为方法(methods) 。 例如,java的Math类给出的常见数学计算的方法如下表所示:
方法 abs(x) ceil(x) cos(x) exp(x)
floor(x) log(x)
功能 x的绝对值 不小于x的最小整数 x的余弦 ex
Java对两种数据类型的不同处理方式:
对基本数据类型:在声明一个具有基本数据类型的变量时,自 动建立该数据类型的对象(或称实例)。如:int k;
对非基本数据类型:语句 String s; 并不建立具有数据类型 String的对象,而是建立一个类型String的引用对象, 数据类型为String的对象可用下面的new语句建立。
每条指令的时间也有限。
程序:是算法用某种程序设计语言的具体实现。
程序可以不满足算法的性质(4)即有限性。
6
1.2 表达算法的抽象机制
1.从机器语言到高级语言的抽象
高级程序设计语言的主要好处是:
(1)高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需 要几周时间的培训就可以胜任程序员的工作; (2)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计 出来的程序可读性好,可维护性强,可靠性高;
抽象数据类型带给算法设计的好处有:
(1)算法顶层设计与底层实现分离; (2)算法设计与数据结构设计隔开,允许数据结构自由选择; (3)数据模型和该模型上的运算统一在ADT中,便于空间和时间耗费的折衷; (4)用抽象数据类型表述的算法具有很好的可维护性; (5)算法自然呈现模块化; (6)为自顶向下逐步求精和模块化提供有效途径和工具; (7)算法结构清晰,层次分明,便于算法正确性的证明和复杂性的分析。
(2)包:java程序和类可以包(packages)的形式组织管理。
(3)import语句:在java程序中可用import语句加载所需的包。
例如,import java.io.*;语句加载java.io包。
9
1.3 描述算法
2.Java数据类型
基本数据类型:详见下页表1-1
数据类型
非基本数据类型:如 Byte, Integer, Boolean, String等。
{
return (a+b+Math.abs(a-b))/2;
}
百度文库
(1)方法参数:Java中所有方法的参数均为值参数。上述方法ab中,a和
b
是形式参数,在调用方法时通过实际参数赋值。
(2)方法重载:Java允许方法重载,即允许定义有不同签名的同名方法。
上述方法ab可重载为:
public static double ab(double a, double b)
s = new String(“Welcome”); String s = new String(“Welcome”);
10
1.3 描述算法
类型 boolean byte char double float int long short
表格1-1 Java基本数据类型
缺省值 分配空间(bits)
取值范围
• 算法:algorithm • 必要性:高级项目开发,数学建模,日常
问题的解决,博弈 • 难度:极难 • 主要参考文献 • 《 计算机程序设计艺术》The Art Of
Computer Programming • 《算法导论》Introduction To
Algorithms
第1章 算法引论
本章主要知识点:
false
1
[true,false]
0
8
[-128,127]
\u0000
16
[\u0000,\uFFFF]
0.0
64
±4.9*10-324 ~ ±1.8*10308
0.0
32
±1.4*10-45 ~ ±3.4*1038
0
32
[-2147483648,2147483647]
0
64
±9.2*1017
0
16
{
return (a+b+Math.abs(a-b))/2.0;
} 13
1.3 描述算法
4.异常
Java的异常提供了一种处理错误的方法。当程序发现一个错 误,就引发一个异常,以便在合适地方捕获异常并进行处理。
不大于x的最大整数
x的自然对数
方法 max(x,y) min(x,y) pow(x,y) sin(x)
sqrt(x) tan(x)
功能 x和y中较大者 x和y中较小者 xy
x的正弦
x的平方根
x的正切
12
1.3 描述算法
3.方法
计算表达式 a b a b
2
值的自定义方法ab描述如下:
public static int ab(int a, int b)
算法设计与分析
1
• 第1章 • 第2章 • 第3章 • 第4章 • 第5章 • 第6章
主要内容介绍
算法引论 递归与分治策略 动态规划 贪心算法 回溯法 分支限界法
2
主要内容介绍(续)
• 第7章 概率算法 • 第8章 NP完全性理论 • 第9章 近似算法 • 第10章 算法优化策略
3
算法学习的必要性
8
1.3 描述算法
在本书中,采用Java语言描述算法。
以下,对Java语言的若干重要特性作简要概述。
1.Java程序结构
(1)Java程序的两种类型:应用程序和applet
区别:应用程序的主方法为main,其可在命令行中用命令 语句 java 应用程序名 来执行; applet的主方法为init,其必须嵌入HTML文件,由 Web浏览器或applet阅读器来执行。