zoukankan      html  css  js  c++  java
  • 算法的时间复杂度与空间复杂度

    常见的时间复杂度量级有:

    • 常数阶O(1)
    • 对数阶O(logN)
    • 线性阶O(n)
    • 线性对数阶O(nlogN)
    • 平方阶O(n²)
    • 立方阶O(n³)
    • K次方阶O(n^k)
    • 指数阶(2^n)

    上面从上至下依次的时间复杂度越来越大,执行的效率越来越低。

    1.常数阶O(1)

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

    消耗的时候并不随着某个变量的增长而增长

    2.线性阶O(n)

    for(i=1; i<=n; ++i)
    {
       j = i;
       j++;
    }

    消耗的时间是随着n的变化而变化的

    3.对数阶O(logN)

    int i = 1;
    while(i<n)
    {
        i = i * 2;
    }

    2 的 x 次方等于 n,那么 x = log2^n

    4.线性对数阶O(nlogN)

    for(m=1; m<n; m++)
    {
        i = 1;
        while(i<n)
        {
            i = i * 2;
        }
    }

    5.平方阶O(n²)

    for(x=1; i<=n; x++)
    {
       for(i=1; i<=n; i++)
        {
           j = i;
           j++;
        }
    }

    空间复杂度比较常用的有:O(1)、O(n)、O(n²)

    1.空间复杂度 O(1) 

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

    代码中的 i、j、m 所分配的空间都不随着处理数据量变化

    2.空间复杂度 O(n)

    int[] m = new int[n]
    for(i=1; i<=n; ++i)
    {
       j = i;
       j++;
    }

     第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间

  • 相关阅读:
    nginx负载均衡
    Zabbix的安装和使用
    JENKINS安装和使用
    docker-compose安装
    gitlab的安装和使用
    Surging填坑记
    SQL2008R2下数据库修复一例
    SQL2000下修复某数据库的经历
    《C++ Primer Plus 第6版》学习笔记
    C++常见笔试题
  • 原文地址:https://www.cnblogs.com/xulei1992/p/14378664.html
Copyright © 2011-2022 走看看