Fork me on Github Fork me on Gitee

(二)时间复杂度和空间复杂度

上一篇:(一)算法

大O表示法:

T(n)=O(f(n))

f(n)是程序运行次数和的函数,一般和循环结构次数n相关

O(),取级数,取函数的数量级:去掉常数和系数,取最大的级数 ​

    eg:4n²+2n+5取级数: ​

    O(f(n))=O(n²)

常见的时间复杂度量级: 

  • 常数阶O(1):无循环结构

  • 对数阶O(logN):执行的次数N和log₂n相关

int i = 1;
while(i<n)
{
    i = i * 2;
}
  • 线性阶O(n):一阶循环

  • 线性对数阶O(nlogN):将O(logN)循环n遍

for(m=1; m<n; m++)
{
    i = 1;
    while(i<n)
    {
        i = i * 2;
    }
}
  • 平方阶O(n²):二次循环

  • 立方阶O(n³):三次循环

  • K次方阶O(n^k):k次循环

  • 指数阶(2^n)

从上而下时间复杂度越来越大,程序的执行效率也越来越低


空间复杂度

S(n)=O(f(n))

O(1):算法执行所需要的临时空间不随着变量n的大小变化

int i = 1;
int j = 2;
++i;
j++;
int m = i + j;

O(n):空间和变量n相关

int[] m = new int[n]

下一篇:(三)线性表

posted @ 2022-01-19 22:13  Tenerome  阅读(56)  评论(0编辑  收藏  举报