Agenda:什么是时间复杂度?

算法的执行效率:算法的执行时间与算法的输入值之间的关系

例如:

def test(num):total = 0for i in range(num):total += ireturn total

时间复杂度就只看这个for 循环 用大O表示法就是O(n)

常见时间复杂度案例分析

O(1):表示我的算法执行时间和我的nums无关(没有for和while循环)

def O1(num):i = numj = num*2return i + j

O(logn):

def OlogN(num):i = 1 while (i<num):i = i * 2return i

因为i*2 所以这里的while循环循环logn次

O(n):

def ON(num):total = 0for i in range(num):total += ireturn total

O(m+n):

def OMN(num1, num2):total = 0for i in range(num1):total += ifor j in range(num2):total += jreturn total

执行时间就是mb+nc  b和c是固定值 所以就是m+n

O(nlogn):

def ONLogN(num1, num2):total = 0j = 0for i in range(num1):while (j < num2):total += i + jj = j * 2return total

for 循环嵌套while循环 就是n乘以logn

O(N^2):

def ON2(num):total = 0for i in range(num):for j in range(num):total += i + jreturn total

就是两个for循环嵌套 就是n乘以n

最后时间复杂度对比

O(1)< O(logn)(二分查找法)< O(n) < O(nlogn) (排序)< O(n^2) < O(2^n) < O(n!)

尽量减少时间复杂度



Agenda:

什么是空间复杂度:算法的存储空间与输入值之间的关系 时间复杂度就是执行时间

大O表示法

常用的空间复杂度分析

常用空间复杂度对比

例如:

def test(num):total = 0for i in range(num):total += ireturn total
def test(nums):array = [] for num in nums:array.append(num)return array

第一段代码的空间复杂度就是 O(1)  不论total最后的数多大 他都只占一个int储存空间

第二段代码 array里面的有多少个数取决于nums里面有多少个数 所以空间复杂度就是O(n)

在看空间复杂度的时候 要看的就是变量 如果变量等于一个常量 就是O(1) 如果有一个变量是存储多个数据 且随着输入的改变而改变 就是其他。。

常用空间复杂度: 一般都是O(1)或O(n)

O(1) < O(N) < O(N^2)

Note:

时间和空间只能二选一

面试时:和面试官将清楚 哪个时间复杂度低 哪个空间复杂度低

工作时:时间大于空间

时间复杂度与空间复杂度总结相关推荐

  1. 数据结构(02)— 时间复杂度与空间复杂度转换

    1. 时间复杂度转化为空间复杂度 常用的降低时间复杂度的方法有递归.二分法.排序算法.动态规划等,降低空间复杂度的核心思路就是,能用低复杂度的数据结构能解决问题,就千万不要用高复杂度的数据结构. ​ ...

  2. a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度

    关注.星标公众号,学点计算机知识. 整理:persistenceBin 今天来跟大家继续分享一下数据结构的基础知识--算法效率的度量:时间复杂度和空间复杂度.首先来跟大家分享一下在电影<复仇者联 ...

  3. 时间复杂度与空间复杂度分析

    作为开发人员,我们都希望在完成功能的基础上让代码运行的更快.更省空间,那如何衡量编写的代码是否更有效率,这就需要我们学会如何分析代码时间复杂度和空间复杂度. 什么是复杂度分析 执行时间和占用空间是代码 ...

  4. 时间复杂度和空间复杂度3 - 数据结构和算法05

    时间复杂度和空间复杂度3 让编程改变世界 Change the world by program 函数调用的时间复杂度分析 如果我们把问题再实际化一点,大家是否能自己正确的分析出来呢? 我们来看下边这 ...

  5. python【数据结构与算法】一种时间复杂度和空间复杂度的计算方法

    文章目录 1 算法的时间复杂度定义 2 推导大O阶方法 2.1 常数阶 2.2 线性阶 2.3 对数阶 2.4 平方阶 2.5 立方阶 3 常见的时间复杂度排序 4 算法空间复杂度 5 常用算法的时间 ...

  6. 常用的排序算法的时间复杂度和空间复杂度

    常用的排序算法的时间复杂度和空间复杂度                                           1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出 ...

  7. 关于算法的时间复杂度和空间复杂度的总结

    一.算法的概念   算法(Algorithm)是将一组输入转化为一组输出的一系列计算步骤,其中每个步骤必须能在有限时间内完成.算法是用来解决一类计算问题的,注意是一类问题,而不是一个特定的问题. 二. ...

  8. 【算法的时间复杂度和空间复杂度】-算法02

    算法的时间复杂度和空间复杂度 一个算法的好坏我们主要从"时间"和"空间" 两个维度来衡量 时间维度:是指执行当前算法所消耗的时间,我们通常用 "时间复 ...

  9. 递归二分查找时间复杂度、空间复杂度和稳定性

    递归 递归条件 自己调用自己 有结束条件 二分查找 二分查找对1~100乱序数字查找 l = list(range(1,101)) def bin_search(data_set,val):low = ...

  10. java 空间复杂度_时间复杂度和空间复杂度

    原文首发于微信公众号:躬行之(jzman-blog) 时间复杂度和空间复杂度可以帮助我们根据具体的平台选择合适的算法,要学会以空间换时间或以时间换空间的设计思想,如在单片机等一般是内存空间比较紧张,在 ...

最新文章

  1. C# Create Access File
  2. 【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法
  3. java监听器定时删除,java监听器定时删除服务器上的文件
  4. js和python交互_JSShell:一个基于python的交互式Shell
  5. linux下的yum命令详解
  6. Spring Cloud中的分布式组件五花八门,我到底该怎么学?
  7. 使用php-amqplib连接rabbitMQ 学习笔记及总结
  8. windows server 2008 大量拷贝后释放内存
  9. Android RxJava
  10. MongoDB导出-导入-迁移
  11. matplotlib简介
  12. redis数据类型-列表类型
  13. 智能语音识别--方案实现--具体过程
  14. 70句计算机英语,70句必背的经典英文电影台词(中英双语)
  15. c语言编译bss和data,.bss段和.data段的区别
  16. pdffactory 打印字体_PdfFactory(虚拟打印机)
  17. ctf GetFlag
  18. 手机系统ROM开发中的电话号码格式客制化
  19. 安装Chrome插件-ChroPath
  20. 修改方维分享系统注册页面的标题

热门文章

  1. 获取URL地址时某些参数被转义
  2. 哪个安卓模拟器比较好用 2023年好用的安卓模拟器推荐
  3. 数据结构-算法与算法描述
  4. H5左滑动不能单独滑动问题和上下滚动不了问题的解决办法
  5. 程序员薪酬榜来了!这9类程序员上榜:AI第1 全栈第3,你排第几?
  6. 码云remote: error: File: , exceeds 100.00 MB
  7. CAD编辑指南7:新建空白图纸和新建表格、导入图片
  8. Google TV 来了
  9. 外媒:三星确认Galaxy S10 5G版4月5日开始销售
  10. AWS 云产品和云计算基础知识详解