过后统计法:
这种方法主要是经过设计好的测试程序和数据,利用计算机计时器对不一样算法编制的程序的运行实际进行比较,从而肯定算法效率的高低。
事前分析估算方法:
在计算机程序编写前,依据统计方法对算法进行估算。
算法
通过总结,一个高级语言编写的侧滑盖女婿在计算机上运行时所消耗的时间却决于下列因素:
1.算法采用的策略和方案。
2.编译产生的代码质量。
3.问题的输入规模。
4.机器执行指令的速度。
咱们研究算法的复杂度,侧重的是研究算法随着输入规模扩大增加量的一个抽象,而不是精确的定位须要政协多少次。
函数的渐近增加:给定两个函数f(n)和g(n),若是存在一个整数N,使得对于全部的n>N,f(n)老是比g(n)大,那么,咱们说f(n)的增加渐近快于g(n)。
时间复杂度:函数
在进行算法分析时,语句总的实现次数T(n)是关于问题规模n的函数,进而分析T(n)随着n的变化状况并肯定T(n)的数量级。算法的时间度量记作T(n)=O(f(n)) 。它表示岁问题规模n的增大,素颜发执行时间的增加率和f(n)的增加率 相同,称做算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。
测试
通常状况下,随着输入规模n的增大,T(n)增加最慢的算法为最优算法。
如何分析一个算法的时间复杂度呢?
1.用常数1代替运行时间中的全部加法常数。
2.在修改后的运行次数函数中,只保留最高阶项。
3.若是最高阶项存在且不是1,则去除与这一项相乘的常数。
4.获得的最后结果就是大O阶。
空间复杂度:
待增长。spa