算法复杂度性能评估

本文深入探讨了算法性能评估的关键概念,包括时间复杂度和空间复杂度。通过大O表示法,我们了解到关注循环次数多的代码对于理解算法运行时间的重要性。在分析时间复杂度时,通常忽略常数项和低阶项,只保留最高阶项,如嵌套循环的例子所示。此外,空间复杂度分析关注算法所需的存储空间与数据规模的关系。总结来说,理解和优化这些复杂度对于提升算法效率至关重要。
摘要由CSDN通过智能技术生成

算法性能评估


时间复杂度

  • 规模:数据的大小对算法至关重要;例:是一个数据还是一百万条数据?影响很大。
  • 运行环境:环境的快慢对算法至关重要;例:在手机和电脑上运行同一算法,速度肯定不一样。

大 O 表示法

def tmp(n):
    add = 0
    for i in range(n):
        add += i
    return add

假设每一行代码的运行时间时 1 unit;
算法的运行时间为:T(n) = (2n + 1) * unit
算法的运行时间与规模成正比,公式表示为:T(n) = O(f(n));O 表示 T(n) 与 f(n) 成正比

O 表示渐进时间复杂度,表示代码执行时间随数据规模增长的变化趋势

只关注循环次数多的代码

def tmp(n):
    add = 0  # 1 unit
    for i in range(n):  # n * unit
        add += i  # n * unit
    return add

假设 n 为无穷大的数,才有可能计算时间复杂度(如果 n 特别小,程序运行时间误差非常小)
在这个前提下,就可以忽略第一行,只关注循环次数多的代码,将这部分代码看作程序运行时间

此时时间复杂度可以记为:T(n) = O(n)

选大量级

def tmp(n):
    for i in range(999):
        print(0)

    for i in range(n):
        print(1)

    for i in range(n):
        for j in range(n):
            print(2)

前提:假设 n 为无穷大的数
第一个循环的时间复杂度是:2 * 999
第二个循环的时间复杂度是:2 * n
第三个循环的时间复杂度是:n2

这种情况下,只取大量级,此时时间复杂度记为:T(n) = O(n2)

嵌套循环要乘积

def tmp(n):
    for i in range(n):
        a(i)

def a(n):
    for i in range(n):
        print(1)

两层嵌套循环,时间复杂度记为:T(n) = O(n2)

常见复杂度分析

  • 非多项式量级
  • 多项式量级

空间复杂度

渐进空间复杂度,表示算法的存储空间与数据规模之间的增常关系。

def tmp(n):
	a = [1] * n
	for i in a:
		print(i)

第二行的空间复杂度就是:O(n)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值