时间复杂度和空间复杂度是算法中最重要的知识点!!!

大家好,我是帅蛋!
在本蛋看来,复杂度分析是数据结构和算法中最重要的知识点,毫不夸张的说,这就是数据结构与算法学习的核心所在。你学会了它你就入的了门,你学不会它,你就永远不知道门儿在哪。

我在这里只说一下:为什么复杂度分析会这么重要?

具体的内容已经放在我在牛客网的专栏【图解数据结构与算法】中了,点击下面的链接直达:
保姆级教学!带你玩转时间复杂度和空间复杂度!

为什么复杂度分析会这么重要?

这个就要从盘古开天辟地,呃,从数据结构与算法的本身说起。

841e629526bad79da1f261ef22f57e4

我平常白天做梦的时候,总是想着当当咸鱼划划水就能赚大钱,最好就是能躺着,钱就直接砸到我脑阔上。数据结构与算法虽然没有本蛋这么大的梦想,但是它的出现也是想着花更少的时间和更少的存储来解决问题。

那如何去考量“更少的时间和更少的存储”,复杂度分析为此而生。

蛋蛋:所以为什么复杂度分析重要你们知道了叭?

臭宝:不知道不知道

蛋蛋:啥?还不知道???

臭宝:对呀对呀

蛋蛋:。。。

既然你诚心诚意的不知道,那我就大发慈悲的打个不恰当的比方。

如果把数据结构与算法看成武功招式,那复杂度分析就是对应的心法。

如果只是学会了数据结构与算法的用法,不学复杂度分析,这就和你费尽千辛万苦在隔壁老王家次卧进门右手第二块地砖下偷挖出老王打遍村里无敌手的村林至宝王霸拳,然后发现秘籍上只有招式,没有内功心法,好好得王霸拳变的还不如王八拳。只有学会了王霸之气,才能虎躯一震,王霸之气一噗,震走村口光棍李养的哈巴狗。

e243977cfd3ab4e0a24d432bad980f9

臭宝:哇,厉害厉害厉害,你胖你说的都对,但还是没必要学啊。

蛋蛋:???

臭宝:现在有很多工具啊包啊,代码随便跑一下,就能轻轻松松知道运行了多少时间占了多少内存啊。算法的效率不就轻松比对出来了么?

蛋蛋:。。。

吐样吐森破!吃葡萄不吐葡萄皮!

你们说的这种主流叫做事后统计法

简单来说,就是你需要提前写好算法代码和编好测试数据,然后在计算机上跑,通过最后得出的运行时间判断算法时效的高低,这里的运行时间就是我们日常的时间。

a3ad51bbbfe89094c390dcefca98bcf

我且不用“万一你费劲心思写好的算法代码本身是个很糟糕的解法”这种理由去反驳你,事后统计法本身存在很多缺陷,它并不是一个对我们来说有用的度量指标:

首先,事后统计法太依赖计算机的软件和硬件等性能。代码在 core i7 处理器的就比 core i5 处理器的运算速度快,更不用说不同的操作系统、不同的编程语言等软件方面,就算是在同一台电脑上,用的所有的东西都一样,内存的占用或者是 CPU 的使用率也会造成运行时间的差异。

再者,事后统计法太依赖于测试数据集的规模。同样是排序算法,你随便整 5 个 10 个的数排序,就算最垃圾的排序算法,也看起来快的和法拉利一样,如果是来10w 个 100w 个,那不同的算法的差距就很大了,而且同样是 10w 个 100w 个数,顺序和乱序的时间又不同了。

那么问题来了,到底测试数据集选多少个合适?数据的顺序如何定又算合适?

说不出来了叭?

9671fb039a9fd6df3d2b09de638a558

可以看出,我们需要一个不依赖于性能和规模等外力影响就可以估算算法效率、判断算法优劣的度量指标,而复杂度分析天生就是干这个的,这也是为什么我们要学习并必须学会复杂度分析!

时间复杂度

时间复杂度,也就是指算法的运行时间

对于某一问题的不同解决算法,运行时间越短算法效率越高,相反,运行时间越长,算法效率越低。

空间复杂度

空间复杂度相较于时间复杂度来说,比较简单,需要掌握的内容不多。

空间复杂度和时间复杂度一样,反映的也是一种趋势,只不过这种趋势是代码运行过程中临时变量占用的内存空间。

全部评论
说实话,我从来么算过这两个
点赞 回复 分享
发布于 2022-02-28 19:56

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务