时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度

在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度。这里进行归纳一下它们代表的含义:这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。一个算法的优劣主要从算法的所需时间和所占用的空间两个方面衡量。一般空间利用率小的,所需时间相对较长。所以性能优化策略里面经常听到 空间换时间,时间换空间这样说法

O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。

1. 比如时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。

int x=1;
while (x <n){x++;
}

list.contains()方法,系统会对list中的每个元素e调用o.equals(e),因此用时间复杂度表示是O(n)

该算法执行次数是如果n=10, 执行次数就是10,n是个变量,用时间复杂度表示是O(n)。

2. 再比如时间复杂度O(n^2),就代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。

for (i = 0; i < n; i++){for (j = 0; j < n; j++){//... }
}

如果两层循环,该算法for循环,最外层循环每执行一次,内层循环都要执行n次,执行次数是根据n所决定的,最大时间复杂度是O(n^2),如果内层循环在某种场景一次就跳出,其实也可以退化成o(n), 通常我们计算时间复杂度都是计算最多情况.由此类推,如果是三层循环,最大时间复杂度就是 O(n^3).比如冒泡、选择等等

3. O(1)就是最低的时空复杂度了,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。 哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)
例子: 理论上哈希表就是O(1)。因为哈希表是通过哈希函数来映射的,所以拿到一个关键字,用哈希函数转换一下,就可以直接从表中取出对应的值。和现存数据有多少毫无关系. Set的contains()方法: HashSet的contains返回true,当且仅当equals返回true   ​ 并且   ​hashCode返回相等的值 ;Set除了比较equals,还比较hashCode

4. O(logn)的算法复杂度,典型的比如二分查找。设想一堆试卷,已经从高到底按照分数排列了,我们现在想找到有没有59分的试卷。怎么办呢?先翻到中间,把试卷堆由中间分成上下两堆,看中间这份是大于还是小于59,如果大于,就留下上面那堆,别的丢掉,如果小于,就留下下面那堆,丢掉上面。然后按照同样的方法,每次丢一半的试卷,直到丢无可丢为止。

参考:  http://www.sohu.com/a/278224982_371153
           https://www.zhihu.com/question/21387264

算法面试中:时间复杂度和空间复杂度是什么?相关推荐

  1. 几道 BAT 算法面试中经常问的「字符串」问题

    https://www.toutiao.com/a6675839856192520711/ String 作为最常见的编程语言类型之一,在算法面试中出现的频率极高. 1. 验证回文串 题目来源于 Le ...

  2. 排序算法 - 面试中的排序算法总结

    排序算法总结 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不 ...

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

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

  4. 算法:算法概述【时间复杂度、空间复杂度】

    一.算法定义 算法:为了实现业务目的的各种方法和思路就是算法.同样的数据,同样的目的, 不同的算法,不同的方法和思路,效率就会不同 算法是一种独立的存在 , 它并不依附于代码 , 代码只是实现算法思想 ...

  5. 带答案分享-算法面试中的趣味题目

    今天给大家分享一下去年校招面试过程中遇到一些比较有趣的题目,并附上我个人理解的答案,希望对大家校招有所帮助. 1.25匹马,有一条只能5匹马比赛的赛道,我们无法计时,只能看到马的排名,如何用最短的次数 ...

  6. 算法度量方法——时间复杂度及空间复杂度

    以前对这方面是一知半解,终于在一次大众点评的笔试中受到刺激. 步入正题:什么样的算法才是高效的算法?想必所有的人都这么想过:用最少的钱,花做最短的时间,买到最多的东西.同样,用最少的内存空间,花最短的 ...

  7. 第四章 数据结构与算法之算法基础(时间复杂度、空间复杂度、稳定性详述)

    1.时间复杂度 (1)常数时间操作:一个操作的时间不以样本的数据量为转移,每次都是固定时间. 发生场景:常见的算术运算.位运算.赋值.比较.自增.自减操作.数组寻址操作. 常数时间操作示例:数组结构按 ...

  8. 【深度学习】6万字解决算法面试中的深度学习基础问题

    这是对白的第 51 期分享 作者 l 清雨卢    出品 l 对白的算法屋 前言 真的是千呼万唤始出来emmmm,去年春招结束写了篇面试的经验分享.在文中提到和小伙伴整理了算法岗面试时遇到的常见知识点 ...

  9. 6万字解决算法面试中的深度学习基础问题

    这是对白的第 51 期分享 作者 l 清雨卢 出品 l 对白的算法屋 前言 真的是千呼万唤始出来emmmm,去年春招结束写了篇面试的经验分享.在文中提到和小伙伴整理了算法岗面试时遇到的常见知识点及回答 ...

  10. 长文警告!6万字解决算法面试中的基础问题

    前言 真的是千呼万唤始出来emmmm,去年春招结束写了篇面试的经验分享.在文中提到和小伙伴整理了算法岗面试时遇到的常见知识点及回答,本想着授人以渔,但没想到大家都看上了我家的 !但因本人执行力不足,被 ...

最新文章

  1. 763 Hex Conversion
  2. poj 1862 Stripies/优先队列
  3. c3d怎么调语言,falc3d参数调整心得
  4. android图片闪动动画,android图片闪烁或帧动画
  5. Zookeeper权限控制ACL详解
  6. Router.use() requires a middleware function but got a Object
  7. python的追加_Python追加添加相同的数据
  8. python mongodb_python实现mongodb的增删改查
  9. 推荐系统实例-基于矩阵分解
  10. opengauss数据库常用SQL语句
  11. ipa文件生成扫码安装二维码的方法
  12. 中兴校招c语言在线笔试题,中兴2021校招软件在线笔试题
  13. dataframe新增一列的方法
  14. 潘通色卡tcx电子版_潘通色卡电子版Pantone TPX(三)
  15. 学习笔记-webrtc
  16. LuoguP1240 诸侯安置
  17. 长城云计算机如何重装系统,重装系统怎么装,这个方法一学就会
  18. 线结构光光条直线方程提取问题分析
  19. 三大研究成果入选ISCA ,推动国产自主芯片的产业化落地
  20. mysql 类图_类图 - 吴小凯 - 博客园

热门文章

  1. 【随手写】BAT脚本之获取N天前日期
  2. printf二进制输出
  3. 博客实现浏览量统计次数
  4. Python格式化输出%.2f%%
  5. 7-11 机工士姆斯塔迪奥(PTA程序设计)
  6. 论文翻译五:A New Method of Automatic Modulation Recognition Based on Dimension Reduction
  7. 2022 年年度最佳开源软件
  8. 在线制作GeoJSON地理信息文件
  9. Arnold材质节点篇-阴影遮罩Shadow matte、颜色转换、纹理着色器
  10. ubuntu18.04更新内核导致显卡驱动失效