【数据结构】时间复杂度和空间复杂度

前言:
  • 时间复杂度与空间复杂度是衡量一个算法的重要标准,统称为算法复杂度。
    算法:对于特定问题求解步骤的描述。
    特性:输入,输出,有穷性,确定性,可行性。
    要求:正确性,可读性,鲁棒性,低存储高效性,简单性。

一个算法存在最好,最差,平均三种情况,但我们通常关注的最坏的情况,理由如下:

  • 一个算法的最坏情况的运行时间是在任意输入下的运行时间上界;
  • 对于某些算法,最坏情况出现情况较为频繁;
  • 大体上看,平均情况与最坏情况一样差;
    *

时间复杂度:语句总的执行次数与问题规模n的函数表达式

一般算法时间复杂度的计算方法:

  • 用常数1取代运行时间中所有的加法常数
  • 在修改后的运行次数函数中,只保留最高阶
  • 如果最高阶项系数存在而且不是1,则去除与这个项相乘的常数,把它变为1

空间复杂度:函数中创建对象的个数关于问题的规模函数表达式

一般算法时间复杂度的计算方法:

  • 创建变量的个数

区别:时间是累积的,但是空间不是累积的,可重复使用。

分治算法的时间复杂度

最常见的是折半查找,既二分查找的时间复杂度。如果有N个数,把这个序列转换为一颗二叉搜索树,既这棵树有N个结点,它查找一个结点需要比较那个结点所在的深度次。最大比较次数为树的深度,既㏒₂N,所以它的时间复杂度为O(㏒₂N),我们经常把它简写成O(㏒N)。

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

  • 时间复杂度=递归的总次数*每次递归函数里边执行的次数
  • 空间复杂度:递归的深度*每次栈帧的个数

常用的时间复杂度所耗费的时间从小到大依次是:
这里写图片描述

结语:

黑夜给了你,宁静的时光,你应该用它来干嘛呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农印象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值