算法的复杂性

算法的渐进分析

f(n)=n^2+100n+log10n+1000

1.数据规模n逐步增大时,f(n)的增长趋势

2.当n增大到一定值以后,计算公式中影响最大的就死n的幂次最高的项 - 其他的常数项和低幂次项都可忽略

算法渐进分析:大O表示法

1.函数f,g定义域为自然数,值域为非负实数集

2.如果存在正数c和n0,使得对任意的n>=n0,都有

f(n)<=cg(n)

3.大O表示法:表达函数增长率上限

   - 一个函数的增长率的上限可能不止一个

4.当上,下限相同时则可用Θ表示法

5.f(n)=O(gn),当且仅当

   - 存在两个参数从c>0,n0>0,对于所有的n>=n0,都有f(n)<=cg(n)


大O表示法的单位时间

1.简单布尔或算术运算(O(1))

2.简单I/O

   - 指函数的输入/输出

     例如,从数组读书数据等操作

   - 不包括键盘文件等I/O

3.函数返回

大O表示法的运算法则

1.加法规则:f1(n)+f2(n)=O(max(f1(n),f2(n)))

- 顺序结构,if结构,switch结构

2.乘法规则:f1(n)*f2(n)=O(f1(n)*f2(n))

- for,while,do,do-while结构

for(i=0;i<n;i++)

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

k++:

算法渐进分析:大Ω表示法

1.定义:如果存正数c和n0,使得对所有得n>=n0,都有f(n)>=cg(n),则称f(n)在集合Ω(g(n))中,或简称f(n)是Ω(g(n))的,或f(n)=Ω(g(n))

2.大O表示法和大Ω表示法的唯一区别在于不等式的方向而已

3.采用大Ω表示法时,最好找出函数增率的所有下限中那个最“紧”(即最大)的下限

4.f(n)=Ω(g(n))

- 存在c,n0>0 对任意n>=n0,0<=cg(n)<=f(n)

5.与大O表示法的唯一区别在于不等式的方向


算法渐进分析:大Θ表示法

1.当上,下限相同时则可用Θ表示法

2.定义如下:

如果一个函数既在集合O(g(n))中又在集合Ω(g(n))中,则称为Θ(g(n))

3.也即,当上,下限相同时则可用大Θ表示法

4.存在正常数c1,c2,以及正整数n0,使得对于任意正整数n>n0,有下列两不等式同时成立:

c1g(n)<=f(n)<=c2g(n)

5.f(n)=Θ(g(n))

- 存在c1,c2,n0>0 使得 0<=c1g(n)<=f(n)<=c2g(n), 对任意n>=n0

6.上,下限相同,则可用Θ表示法





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值