zoukankan      html  css  js  c++  java
  • 大O表示法

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

    渐进分析法最常用的表示方法是用于描述函数渐近行为的数学符号,更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级渐近上界。大O符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》(Analytische Zahlentheorie)首先引入的。   我们常用大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界, 由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个 问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。

    当问题规模即要处理的数据增长时, 基本操作要重复执行的次数必定也会增长, 那么我们关心地是这个执行次数以什么样的数量级增长。所谓数量级可以理解为增长率。这个所谓的数量级就称为算法的渐近时间复杂度(asymptotic time complexity), 简称为时间复杂度。如何分析这个数量级呢? 由于基本操作的执行次数是问题规模n 的一个函数T(n), 所以问题就是我们要确定这个函数T(n)是什么, 然后分析它的数量级, 拥有相同数量级的函数 f(n) 的集合表示为 O(f(n)), O是数量级的标记。如果T(n)的数量级和f(n)相同。

    技术改变生活!
  • 相关阅读:
    【Ts踩坑】关于子类继承Error/Array/Map等造成无法访问子类中声明的方法问题
    【React Hooks】memo和useCallback搭配所带来的性能优化
    【Ts重构Axios】url处理篇
    【CSS style】超出指定行文字后开始省略
    【TypeScript】基本数据类型小结
    【TypeScript】你需要了解的泛型
    【TypeScript】几种高级类型
    Python 下载图片的几种方法
    python with open as f 写韩文中文乱码
    烙印---臧克家
  • 原文地址:https://www.cnblogs.com/grokyao/p/2534360.html
Copyright © 2011-2022 走看看