写在前面的话:
本文只是个人学习邓俊辉老师C++数据结构的整理,包含了很多个人的见解(从内容到材料的组织形式)。所整理的内容不保证逻辑性和完整性,仅供参考。
算法的基本性质:
- 有正确的输入
- 有正确的输出
- 正确性
能正确的解决问题 - 确定性
可以将算法描述为一系列基础操作的序列 - 可行性
大象装进冰箱,可以分成三步:
- 打开冰箱
- 将大象放进冰箱
- 关闭冰箱
看上去没毛病,但是第二步无法实现,是不可行的!
- 有穷性
- 等等
什么是好的算法?
正确性:
1.对简单的输入
2.对大规模的输入
3.对一般性(generalized)的输入
4. 对退化的输入
5. 任意的合法输入
健壮性:(容错能力)
能鉴别不合法的输入并做适当处理,而不致非正常退出
可读性:
结构化+注释+准确命名
效率: 时间 + 空间
其中,算法的时间和空间效率是这门课所讲的重点!
上面的好的算法定义,和好的程序的定义有很多重复之处。好的程序,从写作规范上来讲,要具备,可复用,可拓展,解耦,模块化等特点。