复杂度理论

概述

量化一个算法的时间和空间

内存空间

  • 栈空间(Stack Space)
    • 概念:操作系统开辟出的一个固定大小的空间,该空间不大,专门用来进行函数调用和递归等操作
    • 栈溢出(Stack Overflow):程序开辟过多内存,超过固定空间
    • 包含
      1. 函数参数与返回值
      2. 函数的局部变量
  • 堆空间(Heap Space)
    • 概念:保存的是具体信息(如对象,在Java中堆内存空间的开辟由new完成)
  • 二者的联系
    • 栈空间保存的是一块堆内存地址,即 栈内存 -> 堆内存 -> object

时间复杂度

  • O(logn) 基本可以确定是二分法

  • 运算举例

  1. O(m) +O(n)=O(m+n)
  2. a*O(n)=O(kn)
  • 多项式(Polynomial):一般在底数位置,不在幂次项

  1. O(n) / O(n^2) / O(n^3)
  2. O(n + m) / O(1)
  3. O(logn) / O(nlogn)
  • 非多项式(Nondeterministic Polynomial)

  1. O(2^n) / O(n^n) / O(n!)
  • 小o:最好复杂度

  • 大O:最坏复杂度

  • 只考虑最高项

  1. O(100N + 1000)=O(N)
  • 不考虑常数项和系数

  1. O(logN)=O(logN^2)=O(log_{4}N)
  • T函数推导

  1. T: Time Complexity
  2. n: 问题规模(比如数组大小)
  3. T(n): 求处理问题规模为n的数据的时间复杂度是多少?
  4. 推到方法:不断展开的方法

空间复杂度

  • 一般指额外空间复杂度,即不包含输入输出

编程复杂度

  • 看得懂

思维复杂度

  • 想得出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值