时间复杂度

在竞赛中,一般算机一秒能运行5 x 108次汁算,如果题目給出的时间限制カ1s,那么你选择的算法执行的汁算次数最多应该在10^8量级オ有可能解决这个题目。
多项式复杂度,称它们为高效算法;
指数复杂度, 则称它们低效算法.

复杂度数据范围
O(n)10^8
O(n* log2(n))10^6
n* sqrt(n)10^5
n^25000
n^3300
2^n25
n!11

以上范围仅供参考,实际中还要考虑每种算法的常数。

O(1)

计算时间是一个常数, 和问题的规模n无关. 例如:

  • 用公示计算时, 一次计算的复杂度就是O(1).
  • 哈希算法计算储存位置.
  • 在矩阵A[i][j]找对应元素.

O(log2(n))

计算时间是对数, 通常是以2为低的对数, 每一步计算后, 问题规模减少一倍. 例如:

  • 在一个长度为n的有序数列中查找某个数, 用折半法.
  • 分治法.

O(n)

计算时间随规模n线性增长. 在很多情况下, 这是一个算法可能达到的最优复杂度, 因为输入n个数, 程序一般需要处理所有的数, 即n. 例如:

  • 桶排序
  • 希尔排序(n^1.3)

O(n^2)

  • 插入排序
  • 选择排序
  • 冒泡排序

O(n ^ 3)

  • [[floyd]]

O(n* log2(n)))

这常常是算法能达到的最优复杂度. 例如:

  • 快速排序
  • 归并排序
  • 堆排序

O(2^n)

一般对应集合问题, 例如一个集合中有n个数, 要求输出它的所有子集.

O(n!)

输出所有的全排列.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值