假设两个算法的输入规模都是n,算法A要作2n+3次操做,你能够理解为先有一个n次的循环,执行完成后,再有一个n次循环,最后有三次赋值或运算,共2n+3次操做。算法B要作3n+1次操做。php
当n=1时,算法A效率不如算法B(次数比算法B要多一次)。而当n=2时,二者效率相同;当n>2时,算法A就开始优于算法B了,随着n的增长,算法A比算法B愈来愈好了(执行的次数比B要少)。因而咱们能够得出结论,算法A整体上要好过算法B。算法
输入规模n在没有限制的状况下,只要超过一个数值N,这个函数就老是大于另外一个函数,函数是渐近增加的。函数
函数的渐近增加:给定两个函数f(n)和g(n),若是存在一个整数N,使得对于全部的n>N,f(n)老是比g(n)大,那么,咱们说f(n)的增加渐近快于g(n)。学习
当n≤3的时候,算法C要差于算法D(由于算法C次数比较多),但当n>3后,算法C的优点就愈来愈优于算法D了,到后来更是远远赛过。blog
而当后面的常数去掉后,其实结果没有发生改变。效率
去掉与n相乘的常数,这样的结果也没发生改变,算法C′的次数随着n的增加,仍是远小于算法D′。也就是说,与最高次项相乘的常数并不重要。互联网
当n=1的时候,算法E与算法F结果相同,但当n>1后,算法E的优点就要开始优于算法F,随着n的增大,差别很是明显。经过观察发现,最高次项的指数大的,函数随着n的增加,结果也会变得增加特别快。循环
当n的值愈来愈大时,你会发现,3n+1已经无法和2n2的结果相比较,最终几乎能够忽略不计。也就是说,随着n值变得很是大之后,算法G其实已经很趋近于算法I。因而咱们能够获得这样一个结论,判断一个算法的效率时,函数中的常数和其余次要项经常能够忽略,而更应该关注主项(最高阶项)的阶数。二维码
若是对比这几个算法的关键执行次数函数的渐近增加性,能够分析出:某个算法,随着n的增大,它会愈来愈优于另外一算法,或者愈来愈差于另外一算法。这其实就是事前估算方法的理论依据,经过算法时间复杂度来估算算法时间效率。方法
互联网工程师(id:phpstcn),咱们一块儿学习,一块儿进步