大O符号与算法的时间复杂度

评价算法的标准之一——算法的时间复杂度

算法的时间复杂度:算法(或程序)中基本操作(或语句)重复执行次数的总和。
设n为求解的问题规模,基本操作(或语句)重复执行次数的总和称为语句频度,记作f(n)。
计算公式:时间复杂度记作T(n)=O(f(n))。

大O符号(朗道符号)含义

注意:大O符号含义,以下内容引用自百度百科
https://baike.baidu.com/item/%E5%A4%A7O%E7%AC%A6%E5%8F%B7/656100?fr=aladdin
大O符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》(Analytische Zahlentheorie)首先引入的。而这个记号则是在另一位德国数论学家艾德蒙·朗道(Edmund Landau)的著作中才推广的,因此它有时又称为朗道符号(Landau symbol)。代表“order of …”(……阶)的大O,最初是一个大写的希腊字母’Ο’(Omicron),现今用的是英文大写字母’O’,但从来不是阿拉伯数字’0’。
这个符号有两种形式上很接近但迥然不同的使用方法:无穷大渐近与无穷小渐近。然而这个区别只是在运用中的而不是原则上的——除了对函数自变量的一些不同的限定,“大O”的形式定义在两种情况下都是相同的。
无穷大渐近
大O符号在分析算法效率的时候非常有用。举个例子,解决一个规模为 n 的问题所花费的时间(或者所需步骤的数目)可以被求得:T(n) = 4n2 - 2n + 2。
当 n 增大时,n2; 项将开始占主导地位,而其他各项可以被忽略;
进一步看,n2项的系数也是无关紧要的。这样,大O符号就记下剩余的部分,写作:T(n)∈O(n2)
并且我们就说该算法具有 2阶的时间复杂度。
无穷小渐近
大O也可以用来描述数学函数估计中的误差项。例如:
ex=1+x+x2/2+O(x^3) ,当 x→0 时
这表示,如果 x 足够接近于0,那么误差(ex− (1 + x + x2/ 2))的绝对值小于 x^3的某一常数倍。

因此,在计算算法时间复杂度T(n)=O(f(n))时候,可以将朗道符号理解为忽略低阶和系数的计算。常数项视为n的0次幂

举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事件复杂度曲线

在这里插入图片描述

附注:1.本文主要内容来自中国大学慕课MOOC-华中科技大学-数据结构-李国徽 1.5节 说明算法分析的相关标准课程PPT。
2.本文主要工作为引入并解释朗道符号的作用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值