学习算法的第一天

算法的定义

算法是为了求解一个问题需要循环的、被清楚指定的简单指令的集合。对于一个问题,一旦某种算法给定并且被确定是正确的,那么重要的一步就是确定该算法将需要多少诸如时间或空间等资源量的问题

估计算法资源消耗的数学基础

定义一:如果存在正常数c和 n 0 n_0 n0使得当 N &gt; = n 0 N&gt;=n_0 N>=n0 T ( N ) &lt; = c f ( N ) T(N)&lt;=cf(N) T(N)<=cf(N),则记为 T ( N ) = O ( f ( N ) ) T(N)=O(f(N)) T(N)=O(f(N))
O O O的定义是:T(N)的增长速度小于等于f(N) 例如 N 2 = O ( N 3 ) N^2=O(N^3) N2=O(N3)

定义二:如果存在正常数c和 n 0 n_0 n0使得当 N &gt; = n 0 N&gt;=n_0 N>=n0 T ( N ) &gt; = c f ( N ) T(N)&gt;=cf(N) T(N)>=cf(N), 则记为 T ( N ) = Ω ( f ( N ) ) T(N)= \Omega(f(N)) T(N)=Ω(f(N))
Ω \Omega Ω的定义是T(N)的增长速度大于等于f(N) 例如 N 3 = Ω ( N 2 ) N^3=\Omega(N^2) N3=Ω(N2)

定义三: T ( N ) = Θ ( h ( N ) ) T(N)=\Theta(h(N)) T(N)=Θ(h(N))当且仅当 T ( N ) = O ( h ( N ) ) T(N)=O(h(N)) T(N)=O(h(N)) T ( N ) = Ω ( h ( N ) ) T(N)=\Omega(h(N)) T(N)=Ω(h(N))
Θ \Theta Θ的定义是T(N)的增长速度与h(N)相同 例如 N 2 = Θ ( 2 N 2 ) N^2=\Theta(2N^2) N2=Θ(2N2)

计算时间复杂度的一般法则

法则一:for循环
一个for循环的运行时间至多是该for循环内部那些语句(包括测试)的运行时间乘以迭代的次数。

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

法则三:将各个语句的运行时间求和即可(其中的最大值就是语句的运行时间)

法则四:if/else语句的运行时间不会超过判断的运行时间再加上S1和S2中运行时间长者的总的运行时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值