基础算法分析

一、引言

为什么要学习《数据结构与算法分析》,因为不同算法的代码运行的时间不同,更好的算法在处理大量数据时会节省很多时间!提起算法,自然与高等数学无法离开关系,那么今天就来讨论讨论算法与数学的关系!

二、算法中的相对增长率

在算法中定义,

1.如果T(N)的增长率小于等于f(N),

        记为T(N)=  O f(N);

        ps:如果使用o来记,则不包括等于的这种情况;

2.如果T(N)的增长率大于等于g(N),

        记为T(N)=  Ω f(N);

3.同理,如果增长率相等,则用符号θ来记;

4.举个例子,我们可以说N的平方=O(N的立方),

                                          N的立方=Ω(N的平方)。

三、法则

我们可以通过计算n趋于无穷时的f(N)/g(N)来判断相对增长率的大小:

1.极限为0: f(N)=  O g(N)并尽量用o表示;

2.极限为c不等于0:f(N)=  θ (N);

3.极限为无穷:g(N)=  O f(N)并尽量用o表示;

4.极限摆动:暂不考虑。

四、与数学的关系

我们知道在数学中有无穷级数(常数项级数)这个概念,如果级数收敛,那么通项趋于无穷时必为0!

我们知道代码运行的时间一定是正项级数,所以

符合如下规则:

c0ebe849df454b7693e1ed7af30e0356.png

比较趋于无穷时的通项,就是比较谁更趋于0!

所以:

比值为c时,二者同阶,意味着代码运行时间同阶;

比值为0时,分子更趋于0,则分子是分母的高阶无穷小,所以分子代码的运行时间将小于分母代码的运行时间;

比值为无穷时,分母更趋于0,则分子是分母的低阶无穷小;所以分子代码的运行时间将大于分母代码的运行时间;

所以算法与数学中的两种比值是不是就有所联系了呢?

ps:这个比值在数学中也可用来判断敛散性。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值