【数据结构】时间复杂度与空间复杂度

这篇具有很好参考价值的文章主要介绍了【数据结构】时间复杂度与空间复杂度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【数据结构】时间复杂度与空间复杂度

前言

在学习C语言的时候,大多数的小伙伴们并不会对算法的效率了解,也许算法也是一个陌生的领域,当进入了数据结构这个模块,就应该对算法的效率做一个清晰的认识。但是算法的效率是什么呢?这里就引出来时间复杂度与空间复杂度的概念了。

一、算法效率

1. 算法效率的定义

算法效率指的是算法解决问题所需的时间和空间资源。通常用时间复杂度和空间复杂度来衡量一个算法的效率。
对于初学者来说,这里看到复杂度会被认为是代码的的多少,但是这是错误的。


这里举个例子:(这里递归函数看着代码很少,但是这里的时间复杂度很大)

int Fac(int n)
{
	if (n <= 2)
		return Fac(n - 1) + Fac(n - 2);
	else
		return 1;
}

二、时间复杂度

1. 时间复杂度的定义

时间复杂度是算法在执行时所需的时间资源与问题规模之间的关系。通常以最坏情况下的运行时间为衡量标准,用大O符号来表示。

2. 时间复杂度的计算

计算时间复杂度可以通过分析算法中基本操作的执行次数来完成,然后根据这些操作次数的增长趋势得出算法的时间复杂度。
计算时间复杂度的原则是:根据算法中基本操作重复执行的次数来估算算法的时间复杂度,忽略常数项和低阶项,保留最高阶项

推导大O阶方法:
1、若执行次数都是常数,则用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,常数和低阶项全部去除,只保留最高阶项。
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

三、空间复杂度

1. 空间复杂度的定义

空间复杂度是算法在执行时所需的内存资源与问题规模之间的关系。同样以最坏情况下所需的额外空间为衡量标准,使用大O符号表示。

2. 空间复杂度的计算

计算空间复杂度可以通过分析算法中使用的临时变量、数据结构等占用的空间大小来完成,然后根据这些空间大小的增长趋势得出算法的空间复杂度。
计算空间复杂度的原则是:根据算法中所需存储空间的大小来估算算法的空间复杂度,–忽略常数项和低阶项,保留最高阶项

推导大O阶方法:
1、若运行时间都是常数,则用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,常数和低阶项全部去除,只保留最高阶项。
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

四、时间复杂度曲线图

这是在电脑计算机中绘画出的图,或许有人觉得这些曲线会差不多,但是当我将这个图片缩小后就会发现区别了。
【数据结构】时间复杂度与空间复杂度


这里缩小后发现三个相对分区:(这里用时间复杂度表示)

  1. 无限接近于 y轴 :二次方以上的幂函数( O (n ^ 2) )和大于一为底的指数函数
    (O(n ^ k)),这里还包括一个阶乘(O(n!))(由于增长速度太快,电脑上绘画不出来,图片上就将其省略)。
  2. x轴y轴 之间:一次函数 (O(n)) 和 线性对数 ( O(n * log(n))
  3. 无线接近与 x轴:常数( O(1)) 和 对数 ( O(log(n)))

结论
上述三种中,若时间复杂度为第二条,那么这个程序只能算一般。尽量不要写出第一种,在实际开发中几乎不会使用这样时间复杂度的程序,因为太难维护。相比之下第三种写出来的程序是最好的。
【数据结构】时间复杂度与空间复杂度

结尾

如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。
希望大家以后也能和我一起进步!!🌹🌹
如果这篇文章对你有用的话,希望大家给一个三连!!🌹🌹
【数据结构】时间复杂度与空间复杂度文章来源地址https://www.toymoban.com/news/detail-468676.html

到了这里,关于【数据结构】时间复杂度与空间复杂度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构--时间复杂度与空间复杂度

    在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有程序在机器上跑起来,才能知道,但是如果所有的算法都需要在机器上运行起来去测试时间复杂度就会很麻烦,所以才有了时

    2024年02月16日
    浏览(30)
  • 【数据结构】时间复杂度与空间复杂度

    在学习C语言的时候,大多数的小伙伴们并不会对算法的效率了解,也许算法也是一个陌生的领域,当进入了数据结构这个模块,就应该对算法的效率做一个清晰的认识。但是算法的效率是什么呢?这里就引出来时间复杂度与空间复杂度的概念了。 算法效率 指的是算法解决问

    2024年02月07日
    浏览(25)
  • 数据结构——时间复杂度和空间复杂度

    1.算法效率 2.时间复杂度 3.空间复杂度 4. 常见时间复杂度以及复杂度oj练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢?比如对于以下斐波那契数的计算 我们看到虽然用递归的方式实现斐波那契很简单,但是简单一定代表效率高吗? 我们接着往下看。

    2024年02月13日
    浏览(32)
  • 数据结构——时间复杂度与空间复杂度

    目录 一.什么是空间复杂度与时间复杂度 1.1算法效率 1.2时间复杂度的概念 1.3空间复杂度的概念 二.如何计算常见算法的时间复杂度 2.1大O的渐近表示法  使用规则 三.如何计算常见算法的空间复杂度 3.1 大O渐近表示法 3.2 面试题——消失的数字  3.3 面试题——旋转数组 分为两

    2024年02月07日
    浏览(35)
  • 数据结构:时间复杂度和空间复杂度计算

    算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度, 而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主 要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小

    2024年02月11日
    浏览(25)
  • 数据结构:算法(特性,时间复杂度,空间复杂度)

    算法(Algorithm)是对 特定问题求解步骤 的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。 一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。 算法必须是有穷的,而程序可以是无穷的 算法中每条指令必须有确切的含义,对于

    2024年02月06日
    浏览(33)
  • 数据结构之时间复杂度与空间复杂度

    目录 1.算法效率 1.2算法的复杂度 1.3复杂度对于校招的重要性 ​编辑2.时间复杂度 空间复杂度: 1.1 如何衡量一个算法的好坏? 比方说我们非常熟悉的斐波拉契数列: 递归实现方式非常简洁,但一定好吗?如何衡量其好与坏? 定义: 算法在编写成可执行程序后,运行时需要

    2024年02月05日
    浏览(36)
  • 算法的时间复杂度和空间复杂度(数据结构)

    目录 1、算法效率 1如何衡量一个算法的好坏 2算法的复杂度 2、时间复杂度 1时间复杂度的概念 2大O的渐进表示法 2时间复杂度计算例题 1、计算Func2的时间复杂度 2、计算Func3的时间复杂度 3、计算Func4的时间复杂度 4、计算strchr的时间复杂度 5、计算BubbleSort的时间复杂度 6、计算

    2024年02月03日
    浏览(31)
  • 【数据结构和算法】时间复杂度和空间复杂度

    目录   一、前言 二、时间复杂度 2.1时间复杂度表示形式 2.1.1规则: 3.1如何计算时间复杂度 3.1.1线性阶 3.1.2平方阶 3.1.3对数阶 常见的时间复杂度排序: 三、空间复杂度 3.1Java的基本类型内存占用 数据结构和算法是程序的灵魂,这是某位程序员大佬所言,学习了这门,我们便可

    2023年04月09日
    浏览(27)
  • 数据结构与算法-时间复杂度与空间复杂度

    数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 算法就是定义良好的计算过程,他取一个或一组的值为输入,并产生一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。 算法在

    2024年02月07日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包