关于算法的认知

算法的特性

算法是为了解决某类问题而规定的一个有限长的操作序列.

一个算法必须满足以下五个重要特性:
1. 有穷性.一个算法必须总是在执行有穷步后结束,且每步都必须在有穷时间内完成.
2. 确定性.对于每种情况所应执行的操作,在算法中有确定的规定,不会产生二义性,使算法的执行者与阅读者都能明确知道其中的含义.
3. 可行性.算法的所有操作都可以通过已经实现的基本操作运算执行有限次来完成.
4. 输入.一个算法有零个或多个输入.当用函数描述算法时,输入往往时通过形参表示.
5. 输出.一个算法有一个或多个输出,它们是经过算法加工后结果,无输出的算法没有意义.

算法的优劣评判

一个算法的优劣应该有以下方面来评判:
1. 正确性. 在合理的数据输入下,能够在有限时间内得到正确的结果.
2. 可读性.一个好的算法首先是能够直观的阅读,便于人类理解.
3. 健壮性.当输入的数据非法时,好的算法能够进行正确的反应,而不会崩溃或输出奇怪的结果.
4. 高效性.一个好的算法应该能够在消耗最少的资源(时间/内存使用率/CPU占有率)下而得出正确的结果.可以使用时间复杂度和空间复杂度来衡量.