前段时间通过小詹随笔分享的链接在极客时间购买了王争老师的《数据结构与算法之美》的课程,小詹学长果真是一个很靠谱的学长,凡是通过他的链接购买的课程,之后建有微信群,相互监督学习并分享学习笔记打卡。因此,在此,为表示对小詹学长的感谢,也简单介绍一下“小詹学Python”公众号,小詹学长是一名双一流高校在读研究生,专研c++,python,主要研究图像处理、计算机视觉和机器学习相关知识,定期带你打卡刷leetcode,锻炼编程能力。有兴趣的可以关注他哦~~

下面就开始本次的正题啦~~

  首先,我们需要明白数据结构与算法的大致概念。通俗讲,数据结构就是数据的一种存储结构,而算法就是操作这些数据的方法。数据结构为算法服务,算法作用在数据结构之上。那么,论及数据结构与算法,就离不开对时间、空间的复杂度分析了。

  其次,我们为什么要进行复杂度分析呢?简单讲,那肯定是用户体验和对数据本身处理的优化咯。毕竟,如果数据库里面如果有几百万条数据,挨个搜索查找,这样的等待时间是会让用户崩溃的。所以,复杂度分析当然需要重点分析。

  最后,复杂度分析包含哪几个点呢?

  空间、时间复杂度统一使用大O阶表示法,所有代码的执行时间T(n)均与数据规模成正比:T(n)=O(f(n))。

  (一)时间复杂度:

  时间复杂度即为运行一个程序的时间,大致可分为:多项式量级、非多项式(NP)量级。

  1.多项式量级——随着数据规模的增长,算法的执行时间和空间占用统一呈多项式规律增长:

  常数阶O(1)、对数阶O(logn)、线性阶O(n)、线性对数阶O(n*logn)、幂次阶(平方阶O(n.^2)、立方阶O(n.^3)、四次方O(n.^4)...)

  2.非多项式量级——随着数据量n的增长,时间复杂度急剧增长,执行时间无限增加:

  指数阶O(2.^n)、阶乘阶O(n!)

  图形比较就为如下:

  

  •   下面再说说时间复杂度的计算法则:

  1.单段代码看高频:比如循环。

  2.多段代码取最大:比如单循环+双循环,那么就取复杂度最大的双循环作为该程序的复杂度。

  3.嵌套代码用乘法:一个函数中嵌套另一个函数,那么他们之间的复杂度=O(f(n1))*O(f(n2)),例如递归等。

  4.多个规模用加法:比如两个参数利用了两个循环函数,那么他们程序的复杂度O(n)=O(n1)+O(n2)。

  (二)空间复杂度:

  空间复杂度即占用某个存储空间的大小,例如:

void print(int n) {int i = 0;int[] a = new int[n];for(i;i<n;++i){a[i] = i*i;    }
}

  上面的空间复杂度就为O(n)了。

  总体来说,时间复杂度分析较为繁琐,需要着重掌握一下,空间复杂度就显得较为简单啦。

转载于:https://www.cnblogs.com/somedayLi/p/9728495.html

算法笔记(一)——简述时间、空间复杂度分析相关推荐

  1. 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序

    简单排序算法时间空间复杂度分析及应用(4)-二分插入排序 背景: 顾名思义,这个二分插入排序是直接插入排序的进化版,主要变化的地方就是在内循环部分,即外循环的循环节点在确定区域的位置查询方式由原来的直 ...

  2. 排序算法 之四 分类、时间/空间复杂度、如何选择

    写在前面   现在网上关于排序算法的文档不计其数,为什么要写这篇文章呢?主要是因为一些算法虽然在平时有用到,但是从来没有细细整理过,没有个统一.整体的认识.写这篇文章一来是进行一下总结,二来趁机再系统 ...

  3. 简单排序算法时间空间复杂度分析及应用(7)-希尔排序

    希尔排序,属于插入排序的一种,是直接插入排序的加强版.在希尔排序中引入了步长(gap)的概念,然而在插入排序中,步长默认为1.正如我们直接堆插入排序的分析,数据集合的排列顺序对插入排序的效率会由很大的 ...

  4. 算法笔记:时间复杂度、空间复杂度 进制转化 秦九韶算法

    一.何为算法. 算法是解决问题的方法与步骤,一般通过考虑算法的时间复杂度和空间复杂度来判断一个算法的优秀度. eg:常见的时间复杂度:O(1) <O(logn)<  O(n) <O( ...

  5. 12八大排序算法的稳定性以及时间空间复杂度总结

    文章目录 一.排序的稳定性 二.八种排序方式的复杂度和稳定性 三.总结 一.排序的稳定性 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中 ...

  6. Pyhton 描述 归并排序算法详解 时间复杂度,空间复杂度分析

    算法描述分析: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有 ...

  7. 【算法笔记】极客时间 算法面试通关40讲 笔记  覃超

    [算法笔记]极客时间 算法面试通关40讲 覃超 [算法笔记]极客时间 算法面试通关40讲 覃超 相关链接 在leetcode 上的题号 数组.链表: (堆)栈stack.队列queue 优先队列 哈希 ...

  8. 算法设计与分析课程的时间空间复杂度

    算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...

  9. 排序算法的时间与空间复杂度分析

    时间复杂度 时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法. 计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算 ...

  10. Algorithm Master Road:算法的时间/空间复杂度

    很多同学都觉得算法很难,难以入门,难以理解,更难以掌握和运用,其实归根溯源,我们可以把所有的问题都通过枚举法来解决,但是受困于「时间」和「空间」的因素,有的时候并不能枚举所有的情况,所以需要通过精妙的 ...

最新文章

  1. 中国国际消费电子博览会拥抱转型,全新面貌拭目以待!
  2. 大数据下Limit使用(MySQL)
  3. Java用Xom生成XML文档
  4. Mysql初始化root密码和允许远程访问
  5. 订阅插件提示:This system is not registered with an entitlement server. You can use subscription-manager to
  6. 35岁的互联网人出路在哪?
  7. 无人机官方网站_用上5G和无人机,你家高楼也可以做 体检
  8. android os 偷跑,不测不知道,原来我们的流量每天都在被“偷”走!
  9. 电商平台实战经验:电商中的Hadoop生态系统应用
  10. yum install php-pecl-mongo,pecl安装php mongodb扩展
  11. Hi3559V100基本信息
  12. snmp v3 参数_SNMPv3 配置及snmpwalk命令信息获取
  13. win10升级win11教程(包含TPM2.0的设置以及OfflineInsiderEnroll工具)
  14. Android设置拍照或者上传本地图片
  15. 7.数据归档(Archiver)
  16. C语言----打家劫舍(leetcode三题汇总)
  17. CINTA拉格朗日定理
  18. 不使用redis,在前后端分离项目的条件下将验证码进行储存
  19. C++环境下部署深度学习模型方案
  20. 分享:实时语音通讯,可广域网实时通讯,音质清晰流畅!

热门文章

  1. 用BFS(广度优先搜索queuelist)算法解决农夫过河问题
  2. python dlib opencv人脸识别准确度_Python用opencv+dlib实现人脸识别
  3. 月份java题_Java基础50道经典练习题(14)——求日期
  4. 龙岗网络推广为SEO优化人员介绍如何合理处理垃圾外链?
  5. 导致用户体验差造成网站跳出率过高的原因有哪些?
  6. 作为SEO老人不轻易建议客户进行动态网页优化设置
  7. docker新增目录映射_开发也需了解的运维知识之Docker
  8. mybatisplus执行sql语句_[MySQL]sql语句的执行流程
  9. bootstraptable获取所有数据_一键获取oracle用户下所有表的表名与其数据量
  10. mac用什么写python程序_mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库)...