算法分析的数学基础

本文介绍了算法分析的基础概念,如O、Ω、Θ和o记号的定义,以及如何通过增长率比较算法效率。同时,文章阐述了常见算法结构的时间复杂度计算法则,包括for循环、嵌套循环、顺序语句和if/else语句,并指出如何根据问题规模削减来判断算法的时间复杂度级别。
摘要由CSDN通过智能技术生成

定义:

1. 如果存在正常数c和n0,使得当N>=n0时T(N)<=cf(N),则记为T(N) = O(f(N))。

2. 如果存在正常数c和n0,使得当N>=n0时T(N)>=cf(N),则记为T(N) = Ω(f(N))。

3. T(N) = Θ(h(N))当且仅当T(N) = O(h(N))和T(N) = Ω(h(N))。

4. 如果对所以的常数c存在n0使得当N>n0时T(N) < cp(N),则记为T(N) = o(p(N))。


通常以相对增长率来进行比较。

N^2的增长率比N要大,所以N = O(N^2)。

即T(N) = O(f(N))表示T(N)的增长率小于等于f(N)的增长率,T(N) = Ω(f(N))表示T(N)的增长率大于等于f(N)的增长率,T(N) = Ω(h(N))表示表示T(N)的增长率等于h(N)的增长率,T(N) = o(p(N))表示表示T(N)的增长率小于p(N)的增长率。


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

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

3. 顺序语句 将各个语句的运行时间求和即可。

4. if/else语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值