栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-05

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-05

数据结构之时间复杂度和空间复杂度

时间:2021-10-05
类型:日常干货笔记
记录人:swu_LCY

什么是时间复杂度和空间复杂度?
  • 衡量时间效率和空间效率,最主要关注时间效率. 算法中的基本操作的执行次数,为算法的时间复杂度,而不是具体时间.
  • 算法中空间复杂度是在计算变量的个数,是一个算法在运行过程中临时占用储存空间大小的量度,而不是在计算程序占用了多少bytes的空间
大O的渐进表示法(空间、时间复杂度使用)

时间复杂度是一个估算,是去看表达式中影响最大的那一项.

规则一

  1. 1.用常数1取代运行时间中的所有加法常数
  2. 2.在修改后的运行次数函数中,只保留最高阶项
  3. 3.如果最高阶项存在且不是1,则去除这个项目相乘的常数,得到的结果就是大O阶

规则二

算法的时间复杂度存在最好、平均和最坏的情况:
(悲观预期,看最坏的打算)

  1. 1.最坏情况:任意输入规模的最大运行次数(上界)——O(N)
  2. 2.平均情况:任意输入规模的期望运行次数——O(N/2)
  3. 3.最好的情况:任意输入规模的最小运行次数(下界)——O(1)
备用知识:
  1. 1.冒泡排序
  2. 2.折半查找
  3. 3.阶乘递归(斐波那契为例)
    eg.
    long long Factorial(size_t N)
    {
    return N<2 ? N:Factorial(N-1)*N;
    }
  4. 动态内存管理
  5. malloc()
  6. 递归
  7. 循环
初学者请注意:
  • 不是一层循环就是O(N),两层循环就是O(N^2),要看具体程序.
  • “算法”的复杂度计算,喜欢省略成logN,因为很多地方不好写底数.
  • 有些书本,或者网上的资料会写成0(lgN),严格来说这个是不对的
  • 时间是累计的,空间不是累计的——循环走了N次,重复利用的是一个空间
  • 递归调用了N层,每次调用建立一个栈帧,每个栈帧使用了常数个空间——O(1)
常见的时间复杂度
  • O(N)
  • O(N^2)
  • O(logN)——(很牛)
  • O(1)——(最牛)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号