我们已经简单的讨论了下渐进分析以及最坏,平均和最佳情况的分析。渐进分析的主要思想是分析算法的效率,不用依靠计算机的具体快慢,不需要实现这个算法,也不需要真正去计算时间。渐进记号是一种数学的工具来表示渐进分析算法的时间复杂度。下面列出三种最常用的渐进符号来表示算法的时间复杂度。

1.θ Notation:

theta 符号是用来确定算法性能的上界限和下界限,简单的来说计算Θ符号可以扔掉低阶项,忽略高阶项的系数。举例:3n3+6n2+6000 = θ(n3)。 扔掉低阶的项是OK的因为θ(n3) 肯定是比θ(n2)大的。我们用g(n) 来表示θ中的数值

Θ(g(n)) = {f(n): 存在正数常数 C1 C2 和 n0 使得
          0 <= c1*g(n) <= f(n) <= c2*g(n) for all n >= n0} 在上面的定义中,如果f(n) 是 g(n)的θ中的内容,那么f(n)的值肯定是在 c1*g(n)
和c2 * g(n) 之间 当n 的值很大的情况下。还有一个条件是 f(n)必须是一个非负数。 2.Big O Notation: 大O符号用来表示算法的上界限,举一个插入排序的例子,最佳情况下插入排序会在线性时间里完成(n),
而最坏的可能是在二次时间内完成(n2)。所以我们可以很保险的说插入排序的时间复杂度是O(n2),因为这也包括了线性时间
如果我们用θ符号来表示插入排序的时间复杂度,我们必须用两个可能性,最坏的和最好的:
1.最坏的时间复杂度是 θ(n2)。
2.最好的时间复杂度是 θ(n)。
当我们只知道算法复杂度的上界限时,大O符号很有用。很多情况下,我们简单的分析一下算法就能很简单的找到上界限。
O(g(n)) = { f(n): 存在正数常数 C 和 n0 使得
           0 <= f(n) <= cg(n) for all n >= n0} 


3) Ω Notation:
就像O符号一样,Ω符号是找算法渐进分析的下界限。
Ω符号在我们知道下界限的时候很有用,就像我们在上一个文章说到的,最佳情况的运行时间到多数情况下是没什么用的。所以
Ω符号在三个渐进分析符号中是最没什么用的。
和之前一样,我们用插入排序举例,插入排序的运行时间可以写作Ω(n)。但是这不是一个很有用的信息。所以我们一般只对
平均情况和最坏的情况感兴趣。

Ω (g(n)) = {f(n): 存在正数常数 C 和 n0 使得
          0 <= cg(n) <= f(n) for all n >= n0}.


Exercise:
Which of the following statements is/are valid?
1. Time Complexity of QuickSort is Θ(n^2)
2. Time Complexity of QuickSort is O(n^2)
3. For any two functions f(n) and g(n), we have f(n) = Θ(g(n)) if and only if f(n) = O(g(n)) and f(n) = Ω(g(n)).
4. Time complexity of all computer algorithms can be written as Ω(1) 我觉得是2,3
 

渐进记号 Asymptotic Notations-------geeksforgeeks 翻译的更多相关文章

  1. 算法最坏,平均和最佳情况(Worst, Average and Best Cases)-------geeksforgeeks 翻译

    最坏,平均和最佳运行时间(Worst, Average and Best Cases) 在上一篇文章中,我们讨论到了渐进分析可以解决分析算法的问题,那么在这一篇中,我们用线性搜索来举例说明一下如何用渐 ...

  2. 空间复杂度是什么?What does ‘Space Complexity’ mean? ------geeksforgeeks 翻译

    这一章比较短! 空间复杂度(space complexity)和辅助空间(auxiliary space)经常混用,下面是正确的辅助空间和空间复杂度的定义 辅助空间:算法需要用到的额外或者暂时的存储空 ...

  3. 平摊分析 Amortized Analysis ------geeksforgeeks翻译

    当偶尔一切操作很花的时间很慢,而大多数操作的时间都很快的时候,平摊分析的方法就很很好用了.在平摊分析中,我们分析一串操作并且可以得到最坏情况下的平均时间复杂度.例如hash table, disjoi ...

  4. 用大O记号法测量算法的效率(Algorithm efficiency Asymptotic notation Big O notation)

    为什么要了解算法的效率? 一般来说,编程就是把各种已知的算法代入到自己的代码当中,以此来解决问题.因此,了解各种算法的效率对于我们选择一个合适的算法有很大帮助. 算法的效率由什么确定? 从算法分析的理 ...

  5. Memory Layout of C Programs

    Memory Layout of C Programs   A typical memory representation of C program consists of following sec ...

  6. CSP-S 初赛最后的复习

    2020CSP-S 模拟赛1 3.一个圆形水池中等概率随机分布着四只鸭子,那么存在一条直径,使得鸭子全在直径一侧的概率是(). A.\(\frac 1{16}\) B.\(\frac 1{8}\) C ...

  7. 网易2016研发project师笔试题

    网易2016研发project师笔试题 2015/12/9 11:25(网上收集整理的,參考答案在后面,若有错误请大神指出) 1. 运行指令find / -name "test.c" ...

  8. Ravindrababu Ravula老师的数据结构与算法

    最关键的问题是,作为印度裔,他的英语口音真的真的很好懂!!!而且语速很慢,适合大家学习. 作为一哥热衷于搬砖的小伙,我将他的视频搬运到了B站,大家可以前往我的B站观看,搜索"爱码士Noe&q ...

  9. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2021.7

    公告 ApacheCN 翻译预计将于半年内恢复. 我们的开源项目必须有中文的 README,如果是文档类项目,必须全部中文,否则将会被清理.请大家贡献项目时一定要留意. 我们目标是[财务自由+情感自由 ...

随机推荐

  1. [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存

    文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的 ...

  2. JavaScript焦点轮播图

    在慕课学习了JavaScript焦点轮播图特效,在此做一个整理. 首先是html结构,我用的是本地同文件夹下的三张图片,多出来的第一张(pic3副本)和最后一张图片(pic1副本)是为了实现无缝切换效 ...

  3. 实验12:Problem G: 强悍的矩阵运算来了

    这个题目主要是乘法运算符的重载,卡了我好久,矩阵的乘法用3个嵌套的for循环进行,要分清楚矩阵的乘法结果是第一个矩阵的行,第二个矩阵的列所组成的矩阵. 重载+,*运算符时,可以在参数列表中传两个矩阵引 ...

  4. 转载 BCS 的好文章 1 - 怎么创建和使用BCS

    http://www.sharepointfabian.com/2010/04/16/how-to-create-configure-consume-sharepoint-2010-secure-st ...

  5. unity下载文件三(http异步下载)

    异步下载,顾名思义就是不影响你主线程使用客户端的时候,人家在后台搞你的明堂. 直接入主题,既然要下载,首先得请求,请求成功之后进行回调,这就是一个异步过程,异步回调的时间不可控. 1.首先请求下载. ...

  6. 斯坦福iOS7公开课4-6笔记及演示Demo

    1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不 ...

  7. 多线程基础(七)GCD线程组+栅栏函数

      1.GCD队列组     拦截通知和等待所有任务全部结束在继续往下执行|阻塞   需求:下载两张图片,等两张图片都下载完毕之后,合成图片(这个实例,复习的时候一定要凭空敲出代码练习,好记性不如烂键 ...

  8. CMD命令名详细大全

    在运行菜单里键入CMD,就可以调出CMD命令窗口,有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联. AT 计划在计算机上运行的命令和程序.ATTRIB 显示或更 ...

  9. mysql远程链接 方法和flush-hosts

    有时候会发现要用远程链接mysql 1 先要在mysql的host的机器上修改mysql表,最快就是复制一下本地localhost,现在phpmyadmin复制功能什么的很好用,然后把host列中的l ...

  10. OOD原则汇总

    头五项原则是关于类设计的,它们是: ◆ SRP,单一职责原则,一个类应该有且只有一个改变的理由. ◆ OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为. ◆ LSP,Liskov替换 ...