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

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. HDU 1028(母函数)

    Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.QHand In HandOnline ...

  2. 数组json格式的字符串 转 list<Bean>

    1.  字符串形式: [ { "userid": "admin", "name": "admin", "pas ...

  3. quartz使用(一)

    在项目中经常会碰到定时任务,quartz是一款非常优秀的开源框架, 提供了定时任务的支持,还支持任务的持久化,并且提供了对数据库的支持.下面首先对quartz做一个简单介绍,并附上一个小例子. 1.下 ...

  4. 多准则决策模型-TOPSIS方法

    多准则决策–Multiple Criteria Decision Making 多准则决策–Multiple Criteria Decision Making 多准则决策是指在具有相互冲突.不可共度的 ...

  5. [Xamarin.Android] Fragment Tips

    [Xamarin.Android] Fragment Tips Fragment用途 快速搞懂 Fragment的用途,可以参考下列文章: Android Fragment 使用心得 Android ...

  6. 为阿里云存储开发的PHP PEAR 包:Services_Aliyun_OSS

    阿里云开放存储服务 OSS:用于存储图片.apk等静态资源,使用阿里云带宽,不占用开发者服务器带宽. 阿里云官方PHP SDK: http://aliyun.com/product/oss/#help ...

  7. Automapper扩展方法

    问题描述 系统中实现了一个自定义的PagedList /// <summary> /// Paged list interface /// </summary> public ...

  8. 自己写的表格插件autotable

    自己写的表格插件autotable 作者:田想兵,个人网址:http://www.lovewebgames.com 这个表格插件所完成的功能是:ajax请求数据,然后动态绑定到指定表格下,格式化,分页 ...

  9. 上传Android代码到Jcenter(解决了字符映射的问题)

    请先阅读:http://blog.saymagic.cn/2015/02/16/release-library-to-jcenter.html 最外面的build.gradle // Top-leve ...

  10. IOS中把字符串加密/IOS中怎么样MD5加密/IOS中NSString分类的实现

    看完过后,你会学到: 1学习IOS开发中的分类实现, 2以及类方法的书写, 3以及字符串的MD5加密/解密. ---------------------------wolfhous---------- ...