算法效率的量度

时间复杂度

定义

    一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。

注意

  • 时间复杂度考虑的只是对于问题规模n的增长率,则难以计算基本操作执行次数时,只需要求出它关于n的增长率即可。
  • 基本操作可以选择多个,来综合比较两个算法。
  • 如果输入数据集不同导致基本操作次数不同,可以估算它们的平均值(但有时不方便计算);还可以在最坏情况下估算最大的次数(普遍采用)。

空间复杂度

定义

     作为算法所需存储空间的量度,记作S(n)=O(f(n)),其中n为问题的规模(或大小)。

注意

  • 输入数据所占空间只取决于问题本身,和算法无关,则需要分析除输入和程序(代码等)之外的额外空间;否则要考虑输入。
  • 原地工作的算法,输入数据所占空间和算法无关,同时该算法所占空间是个常量。
原文地址:https://www.cnblogs.com/dann/p/2932809.html