大发快3走势_算法核心——空间复杂度和时间复杂度超详细解析

  • 时间:
  • 浏览:0

一、你什儿 是算法

算法

  • 有十几个 有限指令集

  • 接受以后 输入(以后 状态下不非要收入)

  • 产生输出

  • 一定在有限步骤刚刚终止

  • 每二根指令非要:

  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/