0
点赞
收藏
分享

微信扫一扫

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

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

【数据结构】时间复杂度和空间复杂度的学习笔记(仅供学习交流使用)_时间复杂度_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

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



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






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





举报

相关推荐

0 条评论