第一章 数据结构与算法
- j, {- m0 X+ e, Q 1.1 算法0 u ~) g! W9 C4 l% q/ M3 [
1、算法是指解题方案的准确而完整的描述。换句话说,算法是对特定问题求解步骤的一种描述。
4 ?6 e2 f7 R+ p6 D5 t *算法不等于程序,也不等于计算方法。程序的编制不可能优于算法的设计(注释1) 。
0 }* }9 G, }+ W. b( u0 z8 B# z 2、算法的基本特征. {" o" `9 e# r4 n1 n1 b
(1)可行性。针对实际问题而设计的算法,执行后能够得到满意的结果。
* ~2 Z; W/ ]& T* i2 u! c* D7 p (2)确定性。每一条指令的含义明确,无二义性。并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。
5 I% y; [" K( ` (3)有穷性。算法必须在有限的时间内完成。有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。
/ ~2 ^/ P! p' t* C6 b7 j# |: b (4)拥有足够的情报。算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。当输入不够或输入错误时,算法将无法执行或执行有错。一般说来,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。3 R- W( o, k+ z0 T
*:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
f" @9 Q2 C4 M' B# l$ j- X+ R$ e 3、算法复杂度主要包括时间复杂度和空间复杂度。1 U6 i6 i% L" O3 K- [9 E# p* g7 t
(1)算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。& u: C& N" [9 a. m: m$ \
(2)算法空间复杂度是指执行这个算法所需要的内存空间。" z! |# v( n0 |1 F8 r8 l
注释1:这是因为在编写程序时要受到计算机系统运行环境的限制,程序通常还要考虑很多与方法和分析无关的细节问题。 |