一个优秀的算法应该具备的设计要求主要有以下几点: 正确性 算法的正确性是指算法至少具有输入,输出和加工处理无歧义,并且可以正确反映问题的需求,以及正确得到问题的答案。 关于“正确”的理解一共有四个层次: 算法程序没有语法错误。算法程序能够根据正确的输入的值得到满足要求的输出结果。算法程序能够根据错误的输入的值得到满足规格说明的输出结果。算法程序对于精心设计的,极其刁难的测试数据都能满足要求的输出结果。 第四点比较难,因为我们几乎不可能对所有的情况都逐一进行验证,所以,一般来说,能够满足前3条就是一个正确性比较好的算法了。 可读性 算法设计的另一个目的是为了便于阅读,理解和沟通,如果写的代码只有你和上帝能看懂,那这个算法只能说明很失败,因为算法越难理解,就越难找到他的bug,对于调试和修改就更难了 健壮性 当输入的数据不合法的时候,算法也能给出相关的处理,而不是产生异常或者莫名起码的错误。 时间效率高和空间存储量低 在满足以上几点以后,我们还可以考虑对算法程序进一步优化,尽量满足时间效率高和空间存储量低的需求。