什么是时间复杂度? (O(1), O(log2n), O(n), O(n log2n), O(n2), O(n3))

一. 什么是时间复杂度

时间复杂度,粗暴理解即算法的速度。算法中的基本操作重复执行的次数是问题规模n的某个函数,其时间度量记做T(n)=O(f(n))(其中“O”是指T(n)的数量级),称作算法的渐进时间复杂度,简称时间复杂度。时间复杂度一般用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示。

二. 常见的时间复杂度
  1. O(1):常数级别,表示算法的执行时间与输入数据的规模无关,总是保持恒定。
  2. O(log2n):对数级别,表示算法的执行时间随着输入数据规模的增加而以对数速度增加。
  3. O(n):线性级别,表示算法的执行时间随着输入数据规模的增加而线性增加。
  4. O(n log2n):线性对数级别,表示算法的执行时间随着输入数据规模的增加而以线性对数速度增加。
  5. O(n2):平方级别,表示算法的执行时间随着输入数据规模的增加而以平方速度增加。
  6. O(n3):立方级别,表示算法的执行时间随着输入数据规模的增加而以立方速度增加。

常用的时间复杂度的关系:O(1)<O(log2n)<O(n)<O(n log2n)<O(n2)<O(n3)
指数时间复杂度关系为:O(2n)<O(n!)<O(nn)
有的情况下,算法中基本操作重复执行的次数会随问题的输入数据集的不同而不同。

三. 算法案例
  1. O(1) 时间复杂度:常数时间复杂度的算法,无论输入数据规模如何,执行时间都保持不变。
def constant_time_example():
    # 执行时间与输入数据规模无关
    result = 5 + 3
    return result
  1. O(log2n) 时间复杂度:对数时间复杂度的算法,执行时间随着输入数据规模的对数增长。
def logarithmic_time_example(n):
    # 执行时间与输入数据规模的对数成正比
    result = 0
    for i in range(n):
        result += i
    return result
  1. O(n) 时间复杂度:线性时间复杂度的算法,执行时间随着输入数据规模的线性增长。
def linear_time_example(n):
    # 执行时间与输入数据规模的线性成正比
    result = 0
    for i in range(n):
        result += i
    return result
  1. O(n log2n) 时间复杂度:对数线性时间复杂度的算法,执行时间随着输入数据规模的对数线性增长。
def logarithmic_linear_time_example(n):
    # 执行时间与输入数据规模的对数线性成正比
    result = 0
    for i in range(n):
        for j in range(i):
            result += j
    return result
  1. O(n2) 时间复杂度:平方时间复杂度的算法,执行时间随着输入数据规模的平方增长。
def quadratic_time_example(n):
    # 执行时间与输入数据规模的平方成正比
    result = 0
    for i in range(n):
        for j in range(n):
            result += i * j
    return result
  1. O(n3) 时间复杂度:立方时间复杂度的算法,执行时间随着输入数据规模的立方增长。
def cubic_time_example(n):
    # 执行时间与输入数据规模的立方成正比
    result = 0
    for i in range(n):
        for j in range(n):
            for k in range(n):
                result += i * j * k
    return result
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值