算法复杂度定义
‘壹’ 算法复杂度
算法的复杂度是以什么来度量的?
算法的复杂度是以时间复杂度和空间复杂度来计算的。
①算法的时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。简单地说,时间复杂度是以时间来衡量的。一般来说,如果算法运行的时间越长,时间复杂度也就越高。但是同一个算法,它的运行时间也受到硬件设备的限制,硬件设备越好,运行时间越短。所以在衡量时间复杂度的时候,我们根据算法的基本语句来求解。
值得注意的是:算法程序执行的具体时间和算法的时间复杂度并不是一致的。算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节的影响。而算法的时间复杂度与这些因素无关。
算法的计算工作量是用算法所执行的基本运算次数来度量的。算法所执行的基本运算次数与问题的规模有关,而算法所执行的基本运算次数是问题规模(通常用整数n表示)的函数。所谓问题规模就是问题的计算量的大小。
在具体分析一个算法的工作量时,在同一个问题规模下,算法所执行的基本运算次数还可能与特定的输入有关。即输入不同时,算法所执行的基本运算次数不同。
②算法的空间复杂度
算法的空间复杂度是指执行这个算法所需要的内存空间。简单地说,空间复杂度是算法在运行时临时占用内存空间大小的量度。
算法执行期间所需的存储空间包括3个部分:输入数据所占的存储空间;程序本身所占的存储空间;算法执行过程中所需要的额外空间。其中,额外空间包括算法程序执行过程中的工作单元,以及某种数据结构所需要的附加存储空间。
如果额外空间量相对于问题规模(即输入数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。
为了降低算法的空间复杂度,主要应减少输入所占的存储空间以及额外空间,通常采用压缩存储技术。
总结:
采用不同的存储结构,其数据处理的效率是不同的。因此,在进行数据处理时,选择合适的存储结构很重要。
‘贰’ 算法的时间复杂度定义
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示随问题n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题规模n的某个函数。
这样用大写O()来体现算法时间复杂度的记法,我们称之为大0记法。
‘叁’ 算法的复杂度主要包括
算法的复杂度主要包括时间复杂度和空间复杂度。
时间复杂度是指执行算法所需要时间的计算工作量。
空间复杂度是指算法在计算机内执行时所需存储空间的度量。
算法的定义:算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制,即能够对一定规范的输入,在有限时间内获得所要求的输出。
‘肆’ 什么是算法的复杂度
1、时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
2、空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
3、正确性
算法的正确性是评价一个算法优劣的最重要的标准。
4、可读性
算法的可读性是指一个算法可供人们阅读的容易程度。
5、健壮性
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。