首页 > 编程语言 >算法分析(时间复杂度分析)

算法分析(时间复杂度分析)

时间:2022-09-19 20:12:51浏览次数:66  
标签:分析 复杂度 规模 A1 算法 B1 执行 输入

①事后分析估算方法:

  通过给算法执行过程中添加count,运行一次count+1,直到算法结束,count的值就是此算法的时间复杂度。

  或利用函数库自带的计时器函数,如

  算法前查看起始时间

long start = System.currentTimeMillis();

  算法运行后再查看时间

long end = System.currentTimeMillis();

  最后打印时间差值得出时间复杂度

System.out.println(end-start);

  缺点在于:

    必须依据算法实现编制好的测试程序,可能浪费时间后得到的是一个糟糕的算法。

②事前分析估算方法:

  现一个高级语言编写的程序程序在计算机 上运行所消耗的时间取决于下列因素:

    1.算法采用的策略与方案;

    2.编译产生的代码质量;

    3.问题的输入规模;

    4.机器执行指令的速度;

  如果我们要精确的研究循环的条件执行了多少次,是一件很麻烦的事情,并且,由于真正计算和的代码是内循环的循环体,所以,在研究算法的效率时,我们只考虑核心代码的执行次数,这样可以简化分析。

  假设四个算法的输入规模都是n:

    1.算法A1需要做2n+3次操作

    2.算法A2需要做2n次操作

    3.算法B1需要做3n+1次操作

    4.算法B2需要做3n次操作

 

 

 

 

 

  通过数据表格,比较算法A1和算法B1:

  当输入规模n=1时,A1需要执行5次,B1需要执行4次,所以A1的效率比B1的效率低;

  当输入规模n=2时,A1需要执行7次,B1需要执行7次,所以A1的效率和B1的效率一样;

  当输入规模n>2时,A1需要的执行次数一直比B1需要执行的次数少,所以A1的效率比B1的效率高;

  当输入规模n>2时,算法A1的渐近增长小于算法B1 的渐近增长 通过观察折线图,我们发现,随着输入规模的增大,算法A1和算法A2逐渐重叠到一块,算法B1和算法B2逐渐重叠 到一块,所以我们得出结论:

  随着输入规模的增大,与最高次项相乘的常数可以忽略

 

  假设四个算法的输入规模都是n:

  1.算法C1需要做4n+8次操作

  2.算法C2需要做n次操作

  3.算法D1需要做2n^2次操作

  4.算法D2需要做n^2次操作 

 

 

 

 通过数据表格,对比算法C1和算法D1:

  当输入规模n<=3时,算法C1执行次数多于算法D1,因此算法C1效率低一些;

  当输入规模n>3时,算法C1执行次数少于算法D1,因此,算法D2效率低一些,

  所以,总体上,算法C1要优于算法D1.

通过折线图,对比对比算法C1和C2:

随着输入规模的增大,算法C1和算法C2几乎重叠 通过折线图,对比算法C系列和算法D系列:

随着输入规模的增大,即使去除n^2前面的常数因子,D系列的次数要远远高于C系列。
  因此,可以得出结论:

  随着输入规模的增大,与最高次项相乘的常数可以忽略

 

假设四个算法的输入规模都是n:

  1.算法E1: 2n^2+3n+1;

  2.算法E2: n^2

  3.算法F1: 2n^3+3n+1

  4.算法F2: n^3

 

 

 

 通过数据表格,对比算法E1和算法F1:

  当n=1时,算法E1和算法F1的执行次数一样;

  当n>1时,算法E1的执行次数远远小于算法F1的执行次数;

  所以算法E1总体上是由于算法F1的。

  通过折线图我们会看到,算法F系列随着n的增长会变得特块,算法E系列随着n的增长相比较算法F来说,变得比较 慢,所以可以得出结论:

最高次项的指数大的,随着n的增长,结果也会变得增长特别快

 

假设五个算法的输入规模都是n:

  1.算法G: n^3;

  2.算法H: n^2;

  3.算法I: n:

  4.算法J: logn

  5.算法K

 

 

 通过观察数据表格和折线图,很容易可以得出结论:

  算法函数中n最高次幂越小,算法效率越高

总上所述,在我们比较算法随着输入规模的增长量时,可以有以下规则:

1.算法函数中的常数可以忽略;

2.算法函数中最高次幂的常数因子可以忽略;

3.算法函数中最高次幂越小,算法效率越高。

 

标签:分析,复杂度,规模,A1,算法,B1,执行,输入
From: https://www.cnblogs.com/rubiaaa/p/16708885.html

相关文章