什么是算法。算法的时间复杂度和空间复杂度

算法时间复杂度空间复杂度 阅读详情

以图书馆为例,如果一本一本找累死人,要是有个索引,先找哪一类这样会快很多。如何查找其实就是算法。

算法是解决问题步骤的有限集合,通常用某一种计算机语言进行伪码描述。通常用时间复杂度和空间复杂度来衡量算法的优劣。

算法的五大特征:输入、输出、有穷性、确定性、可行性。

输入:零个或多个输入。

输出:一个或多个输出。

有穷性:有限步骤后在可接受时间内完成。

确定性:每个步骤都有确定含义,无二义性。

可行性:每一步都是可行的。

算法设计要求:正确性、可读性、健壮性、时间效率高和存储低。

正确性:有输入输出,无二义性,有正确答案。

可读性:方便阅读。

健壮性:输入不合法能处理

时间效率高和存储低:时间空间复杂度越低越好。

1.时间复杂度:

时间复杂度是一个函数,它定性描述了该算法的运行时间。

意义:同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。
定义:
关于这是一个代表算法输入值的字符串的长度n的函数。

   时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。

   使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。

实例:
以冒泡排序为例,时间复杂度分析如下:

若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值:
在这里插入图片描述
所以,冒泡排序最好的时间复杂度为 O(n)

若初始文件是反序的,需要进行n-1趟排序。每趟排序要进行 n-1次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

在这里插入图片描述
冒泡排序的最坏时间复杂度为在这里插入图片描述

综上,因此冒泡排序总的平均时间复杂度为 在这里插入图片描述

2.空间复杂度:

我们在写代码时,完全可以用空间来换去时间。

举个例子说,要判断某年是不是闰年,你可能会花一点心思来写一个算法,每给一个年份,就可以通过这个算法计算得到是否闰年的结果。

另外一种方法是,事先建立一个有2050个元素的数组,然后把所有的年份按下标的数字对应,如果是闰年,则此数组元素的值是1,如果不是元素的值则为0。这样,所谓的判断某一年是否为闰年就变成了查找这个数组某一个元素的值的问题。

第一种方法相比起第二种来说很明显非常节省空间,但每一次查询都需要经过一系列的计算才能知道是否为闰年。第二种方法虽然需要在内存里存储2050个元素的数组,但是每次查询只需要一次索引判断即可。

这就是通过一笔空间上的开销来换取计算时间开销的小技巧。到底哪一种方法好?其实还是要看你用在什么地方。

定义:
算法的空间复杂度通过计算算法所需的存储空间实现,算法的空间复杂度的计算公式记作:S(n)=O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。
————————————————
版权声明:本文为CSDN博主「萝卜头LJW」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013164931/article/details/80189351

【数据结构算法时间复杂度空间复杂度 一、前言 数据结构算法是程序的灵魂,这是某位程序员大佬所言,学习了这门,我们便可以在 编程之路越走越远。时间复杂度一般是我们所关心的。 二、时间复杂度 时间复杂度简单的说就是一个程序运行所消耗的时间,叫做时间复杂度,我们无法目测 一个程序具体的时间复杂度,但是我们可以估计大概的时间复杂度。 一段好的代码的就根据算法时间复杂度,即使在大量数据下也能保持高效的运行速率,这也是 我们学习算法的必要性。 2.1时间复杂度表示形式 一般用O()来表示算法时间复杂度,我们叫做大O记法。 阅读详情

相关推荐

算法时间复杂度空间复杂度概念

算法 一、概念: 是指令的集合,是为解决特定问题而规定的一系列操作。 它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。 1、一个算法通常来说具有以下五个特性: 输入:一个算法应以待解决的问题的信息作为输入。 输出:输入对应指令集处理后得到的信息。 可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。 有穷性:算法执行的指令个数是有限的,...

Anna4的博客 1226

什么是时间复杂度空间复杂度

目录算法效率时间复杂度概念大O的线性表示法时间复杂度举例空间复杂度空间复杂度的定义空间复杂度举例 时间复杂度空间复杂度是用来分析一个算法的效率的。 算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已

qq_45967533的博客 3万+

数据结构与算法 - 时空复杂度分析

这周主要总结了时间复杂度的学习,跟小伙伴们分享下,欢迎指正。 一、为何需要分析算法复杂度 挺多同学本科都学习过数据结构算法这门课,但是有没有想过这门课到底是解决什么问题?科学家设计这些数据结构算法是要干嘛? 其实,最终的目的只有一个:让我们写的代码在计算机上运行的速度更快,使用的内存更省!,可是如何才能知道我们写的代码使用多少运行时间内存呢?这就需要分析算法时间复杂度空间复杂度,只有学会分析这 2 者,才能知道我们设计的算法到底有没有性能的提升,不然你费了很大功夫想了一个算法,却发现运行速度慢如乌龟

登龙的专栏 503

时间复杂度空间复杂度解析

1.算法的效率 虽然计算机能快速的完成运算处理,但实际上,它也需要根据输入数据的大小算法效率来消耗一定的处理器资源。要想编写出能高效运行的程序,我们就需要考虑到算法的效率。 算法的效率主要由以下两个复杂度来评估: 时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。 空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。 设计算法时,一般是要先考虑系统环...

qq_43558142的博客 1848

算法算法概述【时间复杂度空间复杂度

1、算法定义 算法:为了实现业务目的的各种方法思路就是算法。同样的数据,同样的目的, 不同的算法,不同的方法思路,效率就会不同 算法是一种独立的存在 , 它并不依附于代码 , 代码只是实现算法思想的方式而已。 算法是独立存在的一种解决问题的方法思想 对于算法而言,实现的语言并不重要,重要的是思想 算法可以有不同的语言描述实现版本(如C描述、C++描述、Python描述等) 2、算法的五大特性 输入: 算法具有0个或多个输入 输出: 算法至少有1个或多个输出 有穷性: 算法在有限的步骤之后会自动结

u013250861的博客 1986

算法时间复杂度空间复杂度是什么?

文章目录一、算法时间复杂度定义二、推导大O阶方法三、推导示例1、常数阶2、线性阶3、对数阶4、平方阶5、立方阶四、常见的时间复杂度五、最坏情况与平均情况六、算法空间复杂度 一、算法时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示...

RunFromHere的博客 3312

什么是算法时间复杂度空间复杂度

空间复杂度描述的是算法在最坏情况下所需的额外内存空间,包括算法中使用的辅助数据结构临时变量等。算法时间复杂度空间复杂度都是用来衡量算法的效率资源消耗的。时间复杂度描述的是算法在最坏情况下执行所需的时间,即算法的最大运行时间。需要注意的是,时间复杂度空间复杂度只是对算法的一种理论分析,实际执行时间空间占用也受到计算机硬件、编程语言优化等方面的影响。因此,在选择评估算法时,需要综合考虑时间复杂度空间复杂度以及实际环境等因素。算法时间复杂度空间复杂度是衡量算法效率的两个重要指标。

wzxue1984的博客 740

算法时间复杂度空间复杂度计算

1、算法时间复杂度 1.1算法时间复杂度的定义:        在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,是一种“渐进表示法”。...

K-fall的博客 4万+

时间复杂度空间复杂度的概念及各种算法时间复杂度 及举例

时间复杂度空间复杂度的概念及各种算法时间复杂度 及举例 算法的复杂度可分为俩种 一种时间复杂度 另一种是空间复杂度。 俩者的概念:时间复杂度是指执行这个算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。时间空间(即寄存器)都是计算机资源的重要体现,而算法的复杂性就是体现在运行该算法时的计算机所需的资源多少。 各种算法的复杂度如下: 时间复杂度: 1:算法时间复杂度反映...

zengxianglei的博客--手指星辰 奈何天! 1万+

深入理解时间空间复杂度

时间复杂度算法中的`基本语句重复的执行次数 空间复杂度空间复杂度算的是变量的个数

k666499436的博客 1万+

数据结构——复杂度的详解(空间复杂度时间复杂度

时间复杂度的定义:时间复杂度的定义:在计算机科学中,算法时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法时间复杂度空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。

sinzz的博客 953

数据结构———算法时间复杂度空间复杂度

在上一篇文章中我们对数据结构与算法的基本概念有了一定的了解,在算法的设计要求中我们提到了高效率,那么如何判定一个程序是否是高效的呢?代码简洁效率就高吗?在这一篇文章中我们进行解答,了解算法时间复杂度空间复杂度

yydsssy的博客 1549
上一篇: 数据结构的三要素
OneITman
博客等级 码龄7年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值