ACM/ICPC
ACM/ICPC
程序设计
程序设计
主讲
主讲
:
:
杜育根
杜育根
数据结构与算法
数据结构与算法
z
z
算法
算法
+
+
数据结构
数据结构
=
=
程序
程序
z
z
算法及复杂性
算法及复杂性
z
z
常用数据结构
常用数据结构
z
z
试题分析
试题分析
算法
算法
Algorithm
Algorithm
算法
算法
是在有限步骤内求解某一问题所使
是在有限步骤内求解某一问题所使
用的一组定义明确的规则。通俗点说,
用的一组定义明确的规则。通俗点说,
就是计算机解题的过程。在这个过程
就是计算机解题的过程。在这个过程
中,无论是形成解题思路还是编写程
中,无论是形成解题思路还是编写程
序,都是在实施某种算法。前者是推理
序,都是在实施某种算法。前者是推理
实现的算法,后者是操作实现的算法。
实现的算法,后者是操作实现的算法。
一个算法应该具有以下五个重要的特
一个算法应该具有以下五个重要的特
征:
征:
有穷性:
有穷性:
一个算法必须保证执行有限步
一个算法必须保证执行有限步
之后结束;
之后结束;
伪代码
伪代码
Pseudocode
Pseudocode
z
z
伪代码
伪代码
(
(
Pseudocode
Pseudocode
)
)
是一种算法描述语
是一种算法描述语
言。使用为代码的目的是为了使被描述的
言。使用为代码的目的是为了使被描述的
算法可以容易地以任何一种编程语言
算法可以容易地以任何一种编程语言
(Pascal, C, Java, etc)
(Pascal, C, Java, etc)
实现。因此,伪代码
实现。因此,伪代码
必须结构清晰,代码简单,可读性好,并
必须结构清晰,代码简单,可读性好,并
且类似自然语言。
且类似自然语言。
算法的复杂性
算法的复杂性
算法的复杂性
算法的复杂性
是算法效率的度量,是评价算法优劣的重要依
是算法效率的度量,是评价算法优劣的重要依
据。一个算法的复杂性的高低体现在运行该算法所需要的计
据。一个算法的复杂性的高低体现在运行该算法所需要的计
算机资源的多少上面,所需的资源越多,我们就说该算法的
算机资源的多少上面,所需的资源越多,我们就说该算法的
复杂性越高;反之,所需的资源越低,则该算法的复杂性越
复杂性越高;反之,所需的资源越低,则该算法的复杂性越
低。
低。
不言而喻,对于任意给定的问题,设计出复杂性尽可能底的
不言而喻,对于任意给定的问题,设计出复杂性尽可能底的
算法是我们在设计算法时追求的一个重要目标;另一方面,
算法是我们在设计算法时追求的一个重要目标;另一方面,
当给定的问题已有多种算法时,选择其中复杂性最低者,是
当给定的问题已有多种算法时,选择其中复杂性最低者,是
我们在选用算法适应遵循的一个重要准则。因此,算法的复
我们在选用算法适应遵循的一个重要准则。因此,算法的复
杂性分析对算法的设计或选用有着重要的指导意义和实用价
杂性分析对算法的设计或选用有着重要的指导意义和实用价
值。
值。