Java-算法分析及其优劣判断

来源:互联网 发布:三洋微波炉怎么样知乎 编辑:程序博客网 时间:2024/05/20 10:55

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。

算法分析的目的在于选择合适算法和改进算法。

一个算法的评价主要从时间复杂度和空间复杂度来考虑。

1、时间复杂度

算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做

  T(n)=Ο(f(n))

因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

2、空间复杂度

算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

以上两点越小越好。

3.正确性

算法的正确性是评价一个算法优劣的最重要的标准。

正确性是指所写的算法能满足具体问题的要求,即对任何合法的输入,算法都会得出正确的结果。

4.可读性

算法的可读性是指一个算法可供人们阅读的容易程度。
 
可读性是指算法被写好之后,该算法被理解的难易程度。一个算法可读性的好坏十分重要,如果一个算法比较抽象,难于理解,那么这个算法就不易交流和推广,对于修改、扩展、维护都十分不利。所以在写算法的时候,要尽量将该算法写得简明易懂。

5.健壮性

健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也成为容错性。

一个程序完成后,运行该程序的用户对程序的理解因人而异,并不能保证每一个人都能按照要求进行输入,健壮性就是指当输入的数据非法时,算法也会做出相应的判断,而不会因为输入的错误造成程序瘫痪。

参考:

如何衡量算法的优劣

原创粉丝点击