iOS面试题收纳-算法理论

113 阅读2分钟

时间复杂度 / 空间复杂度

时间复杂度

时间频度

一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)

时间复杂度
  1. 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示
  2. 若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数。
  3. 则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度.
按数量级递增排列,常见的时间复杂度有:
  • O(1)称为常量级,算法的时间复杂度是一个常数
  • O(n)称为线性级,时间复杂度是数据量n的线性函数。
  • O(n²)称为平方级,与数据量n的二次多项式函数属于同一数量级。
  • O(n³)称为立方级,是n的三次多项式函数。
  • O(logn)称为对数级,是n的对数函数。
  • O(nlogn)称为介于线性级和平方级之间的一种数量级
  • O(2ⁿ)称为指数级,与数据量n的指数函数是一个数量级。
  • O(n!)称为阶乘级,与数据量n的阶乘是一个数量级。

它们之间的关系是: O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2ⁿ)<O(n!),随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低

空间复杂度

  • 评估执行程序所需的存储空间,可以估算出程序对计算机内存的使用程度。
  • 不包括算法程序代码和所处理的数据本身所占空间部分
  • 通常用所使用额外空间的字节数表示。其算法比较简单,记为S(n)=O(f(n)),其中n表示问题规模