秒秒快3手机版_算法核心——空间复杂度和时间复杂度超详细解析

  • 时间:
  • 浏览:1
  • 来源:古韵博客 - 专注共享卢松博客资源

一、哪几块是算法

算法

  • 有另三个白 有限指令集

  • 接受许多输入(许多情况表下不需用收入)

  • 产生输出

  • 一定在有限步骤完后 终止

  • 一根绳子 小指令需用:

  1. 有充分明确的目标,不可不无需 是歧义

  2. 计算机能处里的范围之内

  3. 描述应不依赖于任何五种计算机语言以及具体的实现手段

真是说白了,算法全都我有另三个白 计算过程处里难题的土法律方法。亲戚亲戚我们歌词 歌词 现在将会知道数据价值形式表示数据是为甚存储的,而“系统进程运行=数据价值形式+算法”,数据价值形式是静态的,算法是动态的,它们加起来全都我系统进程运行

对算法来说有输入,有输出,大约函数参数返回值。亲戚亲戚我们歌词 歌词 写算法的完后 习惯把算法封装到有另三个白 函数中。

二、哪几块是好的算法

好,从里面亲戚亲戚我们歌词 歌词 知道了哪几块是算法,下面我再说哪几块是好的算法

在处里同有另三个白 难题的完后 ,亲戚亲戚我们歌词 歌词 通常会有全都种不一样的算法,区别就在于,有的算法比较笨,有的算法比较聪明,全都我们歌词 歌词 为甚去衡量它们谁好谁坏呢?亲戚亲戚我们歌词 歌词 通常有下面有另三个白 指标:

  • 空间冗杂度:根据算法写成的系统进程运行在执行时占用存储单元的长度。

  • 时间冗杂度:根据算法写成的系统进程运行在执行时耗费时间的长度。

先举个例子说,将会给你打印三个白整数,你那个系统进程运行将会瞬间就给出结果了,将会给你打印十万个整数呢?这你就得多等一会了。全都你這個 系统进程运行运行的时间,就跟给你处里的数据是三个白还是十万个是相关的,你這個 十万全都我亲戚亲戚我们歌词 歌词 要处里的数据的规模。亲戚亲戚我们歌词 歌词 把它叫做n,是有另三个白 变量句子,全都我们歌词 歌词 你這個 系统进程运行所用的时间空间都跟你這個 n是有直接关系的。处里有另三个白 难题有全都中不同的土法律方法,你在设计你這個 土法律方法的完后 ,一定要把这有另三个白 次要考虑清楚。一不小心,将会空间冗杂度越多句子,你那个系统进程运行就将会直接爆掉了,非正常中断,我一会会在里面讲,时间冗杂度将会越多句子,你就将会等很长时间都等那末结果。

时间冗杂度



先来看里面图片中的几组代码,我是用Python表示的,你在看的完后 考虑有另三个白 难题:

  1. 四组代码中,哪组的运行时间最短?

  2. 用哪几块土法律方法来体现算法运行的快慢?

刚才说n可不无需 看作数据的规模,规模不一样,运行时间肯定全都我一样,全都我所用时间全都我好选取,不同的n会得到不同的时间,全都亲戚亲戚我们歌词 歌词 用时间冗杂度来表示算法运行的快慢。

先来看下面图片中的几块生活中的事件,估计时间:



这里给你发现亲戚亲戚我们歌词 歌词 会用“”表示有另三个白 大约,里面还有相应的时间单位,那时间冗杂度也参照类似于的土法律方法:

时间冗杂度:用来评估算法运行效率的有另三个白 式子



看里面图片所示,先说print(‘Hello World’),它的时间冗杂度表示为O(1),O严格来说,它表示数学上有另三个白 式子的上界,亲戚亲戚我们歌词 歌词 可不无需 简单的理解为全都我有另三个白 估计,大约,大约里面说的“”。1可不无需 理解为是个运行单位(类似于于秒全都我的单位),为哪几块是O(1),将会print(‘Hello World’)只执行了一次,同理分析第三个白:

它的时间冗杂度表示为O(n),将会这组代码执行了n次。n还是个单位,同理,分析第有另三个白 :

它的时间冗杂度表示为O(​),将会是有两层循环,全都是,​还是个单位。第三个白你各自 就可不无需 分析了,给你越多此一举了。但千万无需以为全都我那末 简单,咱再看下面代码图片:

看完你這個 图片,你有无感觉很良好,和你猜的差越多是吧,哈哈,无需高兴的太早,告诉亲戚亲戚我们歌词 歌词 ,错了,它们的时间冗杂度有无全都我的。

为哪几块?也许了,“1”是单位,但“3”有无单位,3是3乘1,就比如说在生活中,别问我一壶水烧多长时间,那末 人回答说是有另三个白 几分钟将会几块三分钟。再说第三个白,​是单位,n也是个单位,全都我​比n大,全都亲戚亲戚我们歌词 歌词 在估计时用大单位,就好比生活中别问我大约睡了多久,你一般说是几块小时,而有无说几块小时零几分钟,你强调的是有另三个白 大约的时间,明白了吧。

全都正确的时间冗杂度是全都我的:



第有另三个白 为哪几块是O(1),首先print('Hello World')打印一次和打印三次实际的影响不大吧,全都我不管执行几块,我希望它的规模不上升到n那末 大的完后 ,换句话说,1是个单位,全都不管如可,将会这是表示近似,有无表示精确的,全都是O(1).好,再看下面你這個 图片:



当你的循环减半的完后 ,时间冗杂度就会变为O(logn)。全都给你全都我记,当算法过程经常出先循环折半的完后 ,冗杂度式子中会经常出先logn。

时间冗杂度小结

  • 时间冗杂度是用来估计算法运行时间的有另三个白 式子(单位)

  • 一般来说,时间冗杂度高的算法比时间冗杂度低的算法慢

常见的时间冗杂度(按效率排序)

冗杂难题的时间冗杂度

如可简单快速地判断算法冗杂度

空间冗杂度



在空间冗杂度中需用注意的许多全都我理解“空间换时间”,在研究有另三个白 算法的完后 ,时间比空间重要。

此篇完

以上哪几块全都我我对数据价值形式的理解,给你应该说全面了吧,全都我没全面全都我要紧,里面学了再继续补充。

看完有收获?那末 希望老铁别吝啬你的三连击哦

1、点个推荐,让更多的人看完这篇文章

2、关注我的原创微信公众号【泰斗贤若如】,第一时间阅读我的文章

3、欢迎关注我的博客

 【原创声明】:各自 原创:https://www.cnblogs.com/zyx110/