2.1 数学基础

①定义2.1:如果存在正常数 c 和 n0,使得当 N≤cf(N) ,则记为 T(N) = O( f(N) )

解释:T(N) 的增长率 ≤ f(N)

定义2.2: 如果存在正常数 c 和 n0,使得当 N  ≥ cf(N) ,则记为 T(N) = Ω( g(N) )

解释:T(N) 的增长率 ≥ g(N)

定义2.3:T(N) = θ( h(N) )  当且仅当  T(N) = O( h(N) )  和  T(N) = Ω( h(N) )

解释:T(N) 的增长率 = h(N)

定义2.4: 如果对每一正常数 c 都存在常数 n0,使得当 N > n0 时 T(N) < cp(N),则 T(N) = o( p(N) )

如果 T(N) = O( p(N) ) 且 T(N) ≠ θ( p(N) ),则 T(N) = o( p(N) )

(注意大O和小o有区别:大O包含增长率相同的可能性,所以会有等于的关系)

解释:T(N) 的增长率 < g(N)

②大O表示法:称一个函数g(n)是O( f(n) ),当且仅当存在常数 c>0 和 n0>=1,对一切 n>n0 均有 |g(n)|<=c|f(n)| 成立,也称函数 g(n) 以 f(n) 为界或者称 g(n) 优于f(n),记作g(n)=O(f(n))。 定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”。当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。

大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。

③ 当 T(N) = O( f(N) ) 时,是在保证函数 T(N) 以不快于 f(N) 的速度增长,得到 f(N) 是 T(N) 的一个上界,T(N) 是 f(N) 的一个下界,

即 T(N) = O( f(N) )  -->   f(N) = Ω( T(N) )

例子:N^3 比 N^2 增长快 -->N^2 = O( N^3 ) 或  N^3 = Ω( N^2 )

④ 如果 T1(N) = O( f(N) ) 且 T2(N) = O( g(N) ),那么

a) T1(N) + T2(N) = O( f(N) + g(N) )  [ 直观的和非正式的可以写成 max( O( f(N) ), O( g(N) ) ) ]

b)  T1(N) * T2(N) = O( f(N) * g(N) )

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

⑥ 对任意常数k, ( log( 2,N ) ) ^k = O(N),说明对数增长得很缓慢

⑦ 计算极限 lim( N->oo )  f(N) / g(N),确定 f(N) 和 g(N) 的相对增长率,洛必达法则:

a) 极限是 0: f(N) = o( g(N) )

b) 极限是 c≠0: f(N) = θ( g(N) )

c) 极限是 oo: g(N) = o( f(N) )

2.1 数学基础、大O表示法、洛必达法则相对增长率、T(N) = O( f(N) )、Ω( g(N) )、Ω( h(N) )、o( p(N) )相关推荐

  1. 时间复杂度分析-大O表示法

    开篇词 | 从今天起,跨过"数据结构与算法"这道坎 你好,我是王争,毕业于西安交通大学计算机专业.现在回想起来,本科毕业的时候,我的编程水平其实是很差的.直到读研究生的时候,一个师 ...

  2. 费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升

    费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升 附前者链接 https://blog.csdn.net/wo541075754/article/details/101554 ...

  3. div搜索框与按钮不在一行_前阿里巴巴运营专家:搜索框的5大运营玩法

    *全文图片来自网络,基于 CC0 协议  作者 |磊叔,前阿里巴巴运营专家"古语有云:搜索做得好,用户跑不了.搜索框是重要的营销增长场景.在互联网产品上,方寸之间的位置之争是各个功能的生存之 ...

  4. 算法图解学习笔记01:二分查找大O表示法

    二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...

  5. a*算法的时间复杂度_算法的时间复杂度:大O表示法

    本文讨论一下算法的时间复杂度问题,用到的素材取自<算法图解>一书,强烈推荐, 如有不妥,请联系我! 二分查找 随便想一个1-100的数字. 你的目标是以最少的次数猜到这个数字.你每次猜测后 ...

  6. 算法概念:大O表示法/小o表示法/Ω/Θ

    如果算法A需要的时间与f(n)成正比,则算法A称为f(n)阶,表示为O(f(n)).函数f(n)称为算法的增率函数(growth-rate function).该表示法使用大写字母O来表示(order ...

  7. 数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)

    大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述.我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在 ...

  8. 考研数学基础 之线性代数通法——Chapter6:合同对角化与二次型

    考研数学基础 之线性代数通法--Chapter6:合同对角化与二次型 2022考研数学基础 主讲老师: 刘金峰 武忠祥 对称矩阵的对角化 考研范围内只考察实对称矩阵 以下内容所表述的对象均为实对称矩阵 ...

  9. 大O表示法初学者指南

    大O表示法初学者指南 原文地址:https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/  计算机科学中,大O表示法被用来描述 ...

最新文章

  1. 前端开发实习生的第一天
  2. 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算
  3. JS获取元素在页面的位置
  4. mysql 高版本检索外键_第05期:外键到底能不能用?
  5. 单个节点的缓存容量达到上限 Hash算法一致性
  6. a - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历_数据结构--图
  7. Linux命令行配置静态IP地址
  8. OpenShift 4 - 用Pull Secret访问红帽官方或其他外部Registry的Image
  9. 基于django的视频点播网站开发-step12-后台订阅功能...
  10. NTFS-3G的安装和配置(Linux下挂载Windows分区必备)
  11. 多个checkbox 回显
  12. 挑战程序设计竞赛:三角形
  13. 混合线性规划matlab,matlab求解混合的非线性规划软件说明
  14. android禁止屏幕自动旋转_在android程序中禁止屏幕旋转和避免重启Activity
  15. C/C++程序员的编程修养
  16. SAP系统Sizing的原理
  17. Ubuntu完全卸载与安装Mysql
  18. Win10配置pytorch深度学习环境
  19. 无人机三维实景模型的应用和发展
  20. 使用switch语句根据消费金额计算折扣

热门文章

  1. 112页5万字交通大数据服务平台建设方案(word)
  2. facebook广告推广
  3. 几何分布和二项分布有什么区别?
  4. leaflet加载多种形式的高德地图 (002)
  5. Oracle 中将电话号码中间4位数以星号*代替
  6. 工业用绝缘监测装置-IT系统的绝缘监测和绝缘故障定位
  7. 微信推出图片大爆炸功能;苹果自研 5G 芯片或已失败;微软解决导致 Edge 停止响应的 bug|极客头条
  8. Berkeley DB 数据库记录Dbt
  9. jQuery入门基础——选择器
  10. 专科段《财务管理》课程复习资料(1)——单项选择题