时间复杂度

1. 维基上的定义

在计算机科学中,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。


2 复杂度分类

  1. 最坏情况复杂度:(常说的复杂度)定义为任何大小的输入 n 所需的最大执行时间
  2. 平均情况复杂度:通常有特别指定才会使用

3. 算法归类

  1. 线性时间算法:T(n) = O(n);
  2. 指数时间算法:T(n) = O(Mn) 和 Mn= O(T(n)) ,其中 M ≥ n > 1;

4. 常见时间复杂度列表

名称运行时间 T(n)算法举例
常数时间O(1)判断一个二进制数的奇偶
对数时间O(log n)二分搜索
线性时间O(n)无序数组的搜索
线性对数时间O(nlog n)最快的比较排序
二次时间O(n^2)冒泡排序、插入排序

常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(logn)<Ο(n)<Ο(nlogn)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!) 注:尽可能选用多项式阶O(nk)的算法(即P问题)


5 通俗理解

  1. 知乎-司马懿的回答

转载于:https://my.oschina.net/u/3686885/blog/1861469

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值