0
点赞
收藏
分享

微信扫一扫

【shell脚本速成】mysql备份脚本

m逆光生长 2024-06-24 阅读 31
数据结构

目录

一、什么是数据结构

什么是算法

算法的复杂度

二、时间复杂度

三、空间复杂度

四、总结


一、什么是数据结构

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。

什么是算法

算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

算法的复杂度

算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般 是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算 机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计 算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

一般算法常见的复杂度如下:

二、时间复杂度

时间复杂度,又称时间复杂性,在计算机科学中,它是一个函数,用来定性描述算法的运行时间。

时间复杂度是一个代表算法输入值的字符串的长度的函数,常用大 O 符号表示,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,即考察输入值大小趋近无穷时的情况。

将算法需要执行的运算次数用输入大小 n 的函数表示,即为 T(n)。为了估算算法需要的运行时间和简化算法分析,便引入了时间复杂度的概念。

在分析时间复杂度时,通常遵循以下原则:

  1. 循环次数最多原则:只需关注循环次数最多的那段代码。
  2. 加法原则:量级最大的那段代码时间复杂度等于总的时间复杂度。
  3. 乘法原则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积。

算法的时间复杂度可以帮助我们评估算法的效率,在实际应用中,我们希望选择时间复杂度较低的算法,以提高程序的运行速度和性能。但同时,也需要综合考虑空间复杂度等其他因素,以找到最适合具体问题的解决方案。

三、空间复杂度

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。它是一个算法所需存储空间的函数,记作S(n)=O(f(n)),其中为n问题的规模,f(n)为语句关于的所占存储空间的函数。

算法的空间复杂度主要考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。若算法为递归算法,其空间复杂度为递归所使用的堆栈空间的大小,等于一次调用所分配的临时存储空间的大小乘以被调用的次数(即为递归调用的次数加 1,这个 1 表示开始进行的一次非递归调用)。

空间复杂度一般也以数量级的形式给出,用于衡量算法运行时所需额外空间的增长趋势,而不是具体计算占用的存储空间大小。

例如,冒泡排序算法的空间复杂度通常为O(1),因为它在运行过程中只使用了固定数量的额外空间来存储交换标志等少数几个变量;而一些使用递归实现的算法,如计算斐波那契数列的递归算法,其空间复杂度可能为O(n),因为递归调用会在堆栈中占用与输入规模成正比的空间。

在分析算法的优劣时,通常需要同时考虑时间复杂度和空间复杂度。有时为了追求较低的时间复杂度,可能会导致空间复杂度增加;反之,为了降低空间复杂度,可能会使时间复杂度上升。在实际应用中,需要根据具体情况进行权衡和选择。

四、总结

举报

相关推荐

0 条评论