时间复杂度 / 空间复杂度
时间复杂度
时间频度
一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)
时间复杂度
- 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示
- 若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数。
- 则称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表示问题规模