前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法分析

算法分析

作者头像
心跳包
发布2022-05-10 14:30:37
3090
发布2022-05-10 14:30:37
举报

算法是为求解一个问题需要遵循的、被清楚的指定的简单指令集合。

估计算法资源消耗所需的分析一般来说是一个理论问题,因此需要一套正式的系统架构。

定义:如果存在正常数c和

n_{}0
n_{}0

使得当N

\geq
\geq
n_{}0
n_{}0

时,T(N)

\leqslant
\leqslant

cf(N),则记为T(N)=O(f(N))。

定义:如果存在正常数c和

n_{}0
n_{}0

使得当N

\geq
\geq
n_{}0
n_{}0

时,T(N)

\leqslant
\leqslant

cg(N),则记为T(N)=

\Omega
\Omega

(g(N))。

定义:T(N)=

\Theta
\Theta

(h(N)),当且仅当T(N)=O(h(N))且T(N)=

\Omega
\Omega

(h(N)).

定义:如果T(N)=O(h(N)),当且仅当T(N)

\neq
\neq
\Theta
\Theta

(h(N)),则T(N)=o(p(N)).

例如,

N^{3}
N^{3}

增长率比

N^{2}
N^{2}

快,则可以说

N^{2}
N^{2}

=O(

N^{3}
N^{3}

),或者

N^{3}
N^{3}

=

\Omega
\Omega

N^{2}
N^{2}

).

法则1:

如果

T_{1}=O(f(N))且T_{2}(N)=O(g(N))
T_{1}=O(f(N))且T_{2}(N)=O(g(N))

T_{2}(N)=O(g(N))
T_{2}(N)=O(g(N))

那么

(a)

T_{1}(N)+T_{2}=max(O(f(N)),O(g(N))
T_{1}(N)+T_{2}=max(O(f(N)),O(g(N))

,

(b)

T_{1}(N)*T_{2}=O(f(N)*g(N))
T_{1}(N)*T_{2}=O(f(N)*g(N))

法则2:

如果T(N)是一个k次多项式,则

T(N)=\Theta (N^{k})
T(N)=\Theta (N^{k})

法则3:

对任意常数k,

log^{k}N=O(N)
log^{k}N=O(N)

首先将常数或低阶项放进大O是非常坏的习惯。

一、运行时间计算

法则1-for循环

一次for循环的运行时间至多该for循环内语句(包括测试)的运行时间迭代的次数

法则2-嵌套for循环

从里向外分析这些for循环。在一组嵌套for循环内部的一条语句,总的运行时间为该语句的运行时间乘以该组所有的for循环的大小乘积。

法则3-顺序语句

将各个语句的运行时间求和即可

法则4-IF/ELSE

一个if/else语句的运行时间从不超过判断再加上S1和S2中运行时间长者的总运行时间。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档