java算法:算法分析
因为要比较完成同一个任务的不同算法,预测算法在新环境中的性能,所以需要对算法进行数学分析。
虽然实验分析对其中一些任务可能已经满足了,但是数学分析会给我们提供更多的信息。
算法分析具有挑战性。通过仔细研究程序,找到数学量表达的运行时间,并对这些数学量进行数学分析,得出数学公式,再进行比较。
虽然有很多因素影响着算法的运行时间,但是精确地预测某个算法的运行时间也是有可能的。
算法分析的任务就是尽可能多的发现有关算法性能的特性;而Coder的任务就是利用这些信息为特定的运用选择算法。
算法分析就是找出算法基于哪些基本的对象操作,以便把分析与现实分开,同时还需要研究数据并把算法可能输入的模型化。
算法分析的重要数学工具:函数,大O表示法:
logN:程序运行时间是对数级别,N增大,运行时间增长的稍慢。直到N=N2,运行时间才翻倍。
NlogN:把一个问题分成若干个子问题,分别解决这些子问题,再把这些解合并起来。
N:程序运行的时间为线性。随N增大而增大。
N2,y=N3:算法的运行时间是平方次,算法只对相当小的问题有价值。
2n:很少具有指数运行时间的算法适合于实际运用。
大O表示法在此省略。