算法的时间复杂度和空间复杂度

1.介绍

时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。

2.时间复杂度

时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数(数学中带有未知表达式的函数),它定量描述了该算法的运行时间。

3.空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小量度 。这个一般不是很重要。

如果想要了解可以参考http://t.csdnimg.cn/HEQod

4.大O符号(Big O notation)
  • 大O符号(Big O notation)是用于描述函数渐进行为的数学符号。推导大O阶方法:
  • 1、用常数1取代运行时间中的所有加法常数。
  • 2、在修改后的运行次数函数中,只保留最高阶项。什么意思呢,例如:O(n+1),由于cpu计算得太快了,从而忽略了后面的常数项。
  • 3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

以下是常见复杂度对比

5.举例

void Func(int N)
{
    int count = 0;
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < N; ++j)
        {
            ++count;
        }
    }
    for (int k = 0; k < 2 * N; ++k)
    {
        ++count;
    }

这里的Func执行的操作次数:N^2+2*N+10,用大O符号表示为O(N^2)。因为只保留最高阶项。

相关推荐

  1. 算法时间复杂空间复杂

    2024-04-28 21:20:03       31 阅读
  2. 算法时间复杂空间复杂-概念

    2024-04-28 21:20:03       22 阅读
  3. 时间复杂空间复杂

    2024-04-28 21:20:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 21:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 21:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 21:20:03       82 阅读
  4. Python语言-面向对象

    2024-04-28 21:20:03       91 阅读

热门阅读

  1. 分布式系统阅读清单

    2024-04-28 21:20:03       54 阅读
  2. 三高架构是什么

    2024-04-28 21:20:03       34 阅读
  3. 【运维】Linux 常用网络工具

    2024-04-28 21:20:03       35 阅读
  4. 为什么数据库会用圆柱体来表示?

    2024-04-28 21:20:03       32 阅读
  5. 密码学系列6-随机预言机模型和标准模型

    2024-04-28 21:20:03       25 阅读
  6. 网络编程!

    2024-04-28 21:20:03       36 阅读
  7. git bash上传本地文件报错debug

    2024-04-28 21:20:03       33 阅读
  8. Scala Extention

    2024-04-28 21:20:03       22 阅读