数据结构与算法之算法的度量方法(1)

算法效率的度量方法

  • 事后统计方法:这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同的算法编制的程序的运行时间进行比较,从而确定算法效率的高低。
  • 事后统计方法缺点:必须依据算法事先编制好的测试程序,通常需要花费大量时间和精力。
  • 事前分析估算方法:在计算机程序编写前,依据统计方法对算法进行估算。

  经过总结,高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:

  1. 算法采用的策略,方案
  2. 编译产生的代码质量
  3. 问题的输入规模
  4. 机器执行指令的速度

  由此可见,抛开计算机硬件、软件有关的因素,一个程序的运行时间依赖于算法的好坏和问题的输入规模。(问题的输入规模指输入量的多少)

  第一种算法:

 int n=100
private static int suanfa1(int n){ int sum=0; //执行一次 for (int i = 1; i <=n ; i++) { //执行n+1 sum+=i; //执行n次 } return sum; }

  第二种算法:

private static int suanfa2(int n){
        int sum=0;                //执行1次
        sum=(1+n)*(n/2);          //执行1次
        return sum;
}

  第一种算法执行了1+(n+1)+n=2n+2次

  第二种算法执行了1+1=2次

  如果我们把循环看做一个整体,忽略头尾判断的开销,那么这两个算法其实就是n和1的差距。

    我们研究算法的复杂度,侧重的是研究算法随着输入规模扩大增长量的一个抽象,而不是精确地定位需要执行多少次,因为如果这样的话,我们就又得考虑回编译器优化等问题。在分析一个算法的运行时间时,重要的是把基本操作的数量和输入模式关联起来。

 

 

转载于:https://www.cnblogs.com/gousheng107/p/7874832.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值