首页 > 其他分享 >【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)

时间:2022-10-08 12:32:55浏览次数:80  
标签:二分 下面 函数 复杂度 学习 查找 时间 数据结构

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_02

现在更关注的重点是时间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_03

时间复杂度具体怎么计算?

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_04

所以时间复杂度是一个估算,看表达式中影响最大的哪一项。

大O渐进表示法:

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_05

例2:算下面的函数的时间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_06

结果为O(N)因为随着N无限大2对结果的影响不大

例3:算下面的函数的时间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_07

例4算下面的函数的时间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_08

只要是 确定的常数次都是O(1)                理由:因为随着N的增大,效率是不变的

反过来,别人说这个算发复杂度事O(1)说明这个算法不一定执行1次,执行常数次



例5算下面的函数的时间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_09

在一个字符串中查找字符,可能很快找到,可能很慢找到,也可能找不到

这种需要分情况讨论


【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_10

一般以最坏的情况为准




例6算下面的函数的时间复杂度

冒泡排序

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_11



冒泡排序的思想:将下标相邻的两个数做比较,如果前一个数大于后一个数,则交换

下面这个图很好的说明了这个思想


【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_12

准确的次数如图中

但其中影响最大的是N的平方

所以冒泡排序的时间复杂度是N的平方

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_13


注意

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_14

例7算下面的函数的时间复杂度

二分查找(需要分情况)

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_15

二分查找图示:

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_16


二分查找的详细图解:​​(20条消息) 【二分查找】详细图解_Charon_cc的博客-CSDN博客_二分查找​

所以时间复杂度为X=log2N  

类似于折纸的思想假设最后找到了为1,没寻找一次,类似于折了一次纸,我们反过来计算的时候需要×2,所以假设找了X次,然后有下图的过程

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_17

简写形式

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_18

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_19



例7算下面的函数的时间复杂度


【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_20

时间复杂度为:

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_21

如果在函数上加一个for循环

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_22

则时间复杂度变为O(N^2)











常见的时间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_23

常见的时间复杂度对比:



【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_24

O(1)时间复杂度的算法是最牛逼的



O(lgN)也牛逼

例如

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_25











常见的空间复杂度的计算

概念

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_26

例1:计算空间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_27

解:


【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_28

提问:

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_29

解:

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_二分查找_30

例2:计算空间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_31

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_空间复杂度_32


找表达式中对结果影响最大的那一项

例3:计算空间复杂度

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_33

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_数据结构_34

调用的时候建立栈帧,返回得时候销毁栈帧



看最坏最多得情况需要用多少空间就是空间复杂度






时间复杂度和空间复杂度得意义:可以通过这个复杂度思想交流算法优不优





标签:二分,下面,函数,复杂度,学习,查找,时间,数据结构
From: https://blog.51cto.com/u_15100472/5737169

相关文章

  • 【数据结构】时间复杂度和空间复杂度的练习题(仅供学习交流使用)
    习题:解:异或:相同为0相异为1     0和任何数异或都是那个数本身因为这个原理所以两个数交换可以考虑使用异或,不需要考虑顺序代码实现:(++i和i++结果是一样得,如果取返回......
  • 主动学习和半监督学习 - 调研总结
    前言我的第一篇半监督论文(投了篇ccfb的trans),因为第二次小修没改好,第三次小修审稿人在最后一条意见中问了一个personalquestion:Apersonalquestion:Whatisthedifferen......
  • 第六周学习总结 2022-2023-1 20221407 姚博茗
    第六周学习总结作业信息班级2022-2023-1-计算机基础与程序设计作业要求第六周作业这个作业的目标第六周作业作业正文见下教材内容总结《C语言程......
  • 动手学深度学习:机器翻译
    《动手学深度学习》的最后一篇文章,在这篇文章里,将学习什么是编码器解码器的结构,什么是束搜索,以及注意力机制是什么,最后就是仔细地研究一下课本中最后一个机器翻译的代码实......
  • Java学习之路:Dos命令
    2022-10-08 10:25:42(一)打开CMD的方式开始+系统+命令提示符Win+R 输入cmd打开控制台在任意的文件夹下面,按住Shift+鼠标右键,点击在此打开命令行窗口资源管理器的地......
  • (九)模仿学习-动态更改大屏数据
    我们通过前面的练习,完全可以完成一个返回页面的操作。首先我们准备一个action并在struts.xml中添加。创建action我们先什么数据都不返回,只返回一个页面在application......
  • 2022-2023-1 20221307 《计算机基础与程序设计》 第六周学习总结
    教材学习内容总结Polya解决问题的方法:1.理解问题2.找到数据与未知数的关系(辅助问题)3.执行方案4.分析解决方案简单类型与组合类型:组合类型:指能够表示多个数据的类型复合数......
  • 学习PLC的15个基础
    从事电力作业的人员都知道,工业生产和科技的发展都离不开PLC的自动化控制,PLC可以广义的理解为:集中的继电器延伸控制柜,实际的生产应用中,PLC大大的节省了工业控制的成本,加强了......
  • unityshader学习笔记4
    顶点/片元着色器的基本结构:Shader"Custom/SimpleShader"{  SubShader{    Pass{      CGPROGRAM      #pragmavertexve......
  • dayjs学习笔记
    dayjs官网:https://dayjs.fenxianglu.cn/category/parse.html一、安装     npminstalldayjs--save二、引用     importdayjsfrom'dayjs'  Da......