许久没有更过数据结构的博客了,今天就来补一下复杂度问题
为什么需要讨论复杂度??🧐
我们讨论一个算法的效率的评判标准主要就是通过时间复杂度和空间复杂度来衡量😎 试想一下,为什么一个算法很优?那么评判的标准就是通过这个来体现
时间复杂度🔑
在这里先明确一个概念: 一个语句的频度是指该语句在算法中被重复执行的次数,一个算法中所有语句的频度的和记为T(n)🍀那么现在的问题就是去分析这个n,最终得出T(n)的数量级🍺
这里的O的含义就是上面所说的T(n)的数量级,除了规模n,算法的复杂度也取决于输入数据的性质,我的理解就是,有些题目不仅仅和n有关,也可能和其他的变量有关,比如一个变量很大很大很大,那么一循环起来,负荷也是很大的,具体直接看下面的一些例题吧🍔🍔🍔
插播一下类型🍜
网图纯属网图
看到这张图,大家就明白了一点:这玩意儿还要看类型,不同的类型结果的对比很有可能不一样,关于出场方式呢,欢迎大家去看一篇博客:点击这里
加法规则🍣
乘法规则🥡
我的总结🕊🕊🕊
这类题目太多了,类型也很多,比如说题目是while循环?for循环?嵌套循环?递归?各大排序的复杂度最坏最好情况复杂度分析?...类型很多,题型也很多,要总结起来很麻烦,所以先去试着做几道题,从题目中"感知",抓住"中心",这样不管遇到什么类型的题目,做到不慌、不乱🐱?💻🐱?💻🐱?💻 |
例题🥪
2021年王道数据结构🍻
王道里不是特别多题目,我下面列举一些代表性的🐱?🏍🐱?🏍🐱?🏍
我的理解:明确i每次都会乘以2,直到i的结果<=n的时候结束,可以假设执行的时间是t,也就是有t个2相乘的意思嘛,那么就有 2^t,那么此时i = 2^t = n,那么此时t=log(2)n啦🥱🥱🥱,下面一道题也是相同的解法
递归类
这道题很简单,就不说了🙁,下面的题目比较有意思🐱?🐉🐱?🐉🐱?🐉
与"链表"结合
嵌套循环
分析
特别要注意这个细节就是x=k-1,把它带入会发现只剩下 k^2 了下面的例题也有这样的:
结语💦💦
好了,今天的时间复杂度我自己的一个小练习小总结就到这里结束, 有任何疑问和错误就评论区和私信见吧💓💓欢迎关注、点赞、收藏和评论,我们下期再见💨💨 |
|