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

前言:

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

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

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

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

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

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

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

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

  • 创建变量的个数

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

分治算法的时间复杂度

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

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

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

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

结语:

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

猜你喜欢

转载自blog.csdn.net/qq_41035588/article/details/81818848