要设计出优良的算法,前辈们已经总结出了一些原则供我们来参考!这样我们就可以站在巨人的肩膀上写我们自己的算法了!
基本的原则有五个: 正确性、健壮性、高效性、环保性和可读性!
正确性
正确性是设计算的最基本的原则!如果不能正确的解决问题,那设计算法的意义又是什么呢?这个容易理解!但是所谓的“正确”在这里确是多层面的! - 算法的实现上没有错误。即我们编写的代码没有语法错误。 - 算法对于合法的输入应该能得到满足要求的输出结果! - 算法对非法的输入应该得到合适的反馈结果。 - 算法程序是精心选择的,甚至刁难的测试数据都能得到满足要求的结果。 - 算法是针对该问题的而不是针对其它问题的!否则满足上面四项也是错误的!
前面的容易理解,最后一条反例是:要设计一个排序的算法你却设计了一个搜索的算法,或许语法正确,数据输入也能得到结果,但是并不能解决目标问题。这种常识上的没有错误在这里也是不正确的!
健壮性
健壮性是在证确性的基础之上对算法更高层次的要求!是说程序是稳定可靠的!不能说运行一段时间程序就要挂掉!
或者因为一次非法输入程序就崩溃了! 健壮性就是要求程序稳定运行!
高效性
高效性是说算法的时间效率尽量的高!也就是我们常常说的“做事儿的效率”!在这里就是算法解决问题的效率!其实这个也是大家常常去评判一个算法优劣的很重要的标准!
环保性
提到环保性,很多人是不是感觉莫名其妙!难道算法也要环保吗?环保除了人人有责,算法也有责?其实这里的环保性是指算法的资源利用越少越好!即我们常说的占用内存越低越好!其实这个也好理解!我们电脑上的资源都是有限的!对于算法而言,肯定是占用的内存的少一些是更有优势的!
可读性
最后一个原则往往被很多人忽略掉,但也是最重要的原则! 算法的实现最终是要靠程序的,在这里我们是要用PHP编写程序来实现算法!那么程序是不是一次性写完,以后就再也不会修改维护了呢?显然不是!
程序读的次数要远远多于写的次数!