事前分析估算方法:在计算机程序编制前,依据统计方法对算法进行估算,抛开与计算机硬件软件有关的因素,一个程序的运行时间,依赖于算法的,好坏和问题的输入规模,所谓问题输入规模是指输入量的多少

 

推导过程,比如计算1+2+3+...100

int i,sum=0,n=100 //执行1

for(i=1;i<=n;i++) //执行n+1

{

    sum=sum+i;    //执行n

}

去掉头尾循环判断,执行了n

 

第二种算法:

int sum=0,n=100  //执行1

sum=(1+n)*n/2;   //执行1

 

去掉头尾循环判断,执行了1

 

延伸一下:

int i,x,j,sum=0,n=100 //执行1

for(i=1;i<=n;i++) //执行n+1

{

    for(j=1;i<=n;j++){

        x++;

        sum=sum+x;  //执行n*n

    }

}

循环部分的代码整体需要执行n^2

 

因此当问题输入规模是n时,f(n)作为一个函数操作数量分别为

f(n)=n

f(n)=1

f(n)=n^2

由于函数的渐进增长,n的值越大,差异也就越大,因此我们在判断一个算法时

一般都忽略掉常数项,忽略掉次要项,只关注最高次项,关注最高阶项的阶数

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐