首页 > 编程知识 正文

不同算法的时间复杂度,各算法的时间复杂度

时间:2023-05-03 06:40:48 阅读:159733 作者:1931

时间复杂度和空间复杂度的概念、各种算法的时间复杂度和例示算法的复杂度可以分为两部分。 一个是时间复杂度,另一个是空间复杂度。

两者的概念:时间复杂度是指这个算法所需要的计算工作量; 另一方面,3358www.Sina.com/意味着执行该算法的空间复杂度算法的复杂性是执行该算法时的计算机所需的资源量。

各种算法的复杂性如下。

时间复杂性:

1 )算法的时间复杂度反映了程序运行时间随输入规模的增加而增加的顺序,在很大程度上反映了算法的优劣;

2 )算法的执行时间需要根据该算法编制的程序在计算机上执行时所消耗的时间来测量。 测量方法有两种:事后统计方法和事前分析推断方法。 由于事后统计方法多依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣。 因此,多采用先验分析估算的方法;

3 )一个算法由控制结构(顺序、分支、循环3种)和原操作)固有数据类型的操作)构成,算法时间依赖于两者的综合效率

4 )一个算法所需的时间与算法中语句的执行次数成正比,执行次数越多所需时间越长。 一个算法中的执行次数称为句子频率或时间频率。 记为t(n )

5 )在时间频率上,n被称为问题的规模,首先要理解的是,当n不断变化时,它所呈现的规律与被称为时间复杂度(实际上在其间引入了辅助函数f(n ),但它是t ) n的相同数量级的函数。 )

6 )在各算法中,如果算法中的语句的执行次数为常数,则时间复杂度为o(1); 另外,即使时间频率因算法而异,他们的时间复杂度也可能相同。 在eg:t(n )=n^2 2n 4和t ) n )=4n2 n 8时,他们的时间频率显著不同,但他们的时间复杂度相同,均为o )为n2,时间复杂度只关注最高几个阶段,与其系数无关。

所需要的内存空间。时间和空间(即寄存器)都是计算机资源的重要体现,而

找出算法中的基本语句

算法中执行次数最多的句子是基本句子,通常是最内层循环的循环体。

计算基本语句执行次数的数量级

只需计算基本语句执行次数的数量级。 这意味着只要保证基本语句执行次数函数中的最高次幂是正确的即可,低次幂和最高次幂的所有系数都可以忽略。 这简化了算法分析,使我们可以将注意力集中在增长率这一最重要的点上。

用大符号表示算法的时间性能。

将基本语句的执行次数的命令放入大符号。

当算法包含嵌套循环时,基本语句通常为最内层的循环体,当算法包含并行循环时,加上并行循环的时间复杂度

举个简单的例子:

for(I=1; i=n; I )

{a };

for(I=1; i=n; I )

{

for(j=1; j=n; j )

{

a;

}

}

如果第一个for循环的时间复杂度为o(n ),第二个for循环的时间复杂度为o ) n2 ),那么总算法时间复杂度为o ) n2n )。

o )1)表示基本语句的执行次数为常数,一般来说,只要算法中不存在线性语句,时间复杂度为o ) 1。

空间复杂性:

1 )空间复杂度是指一种算法在运行过程中临时占用存储空间大小的度量;

2 ) 1个算法在计算机上占有的存储器,有程序代码占有的领域,输入输出数据占有的领域,辅助变量占有的领域3个。 程序代码占用的区域取决于算法本身的长度,输入输出数据占用的区域取决于需要解决的问题,从参数表中调用函数进行传递。 只有辅助变量是算法运行过程中临时占用的存储区域,与区域复杂度有关。

3 :通常,只要算法与动态分配的空间和递归、堆栈上所需的空间没有关系,空间复杂度通常为0(1);

4 )对于一种算法,其时间复杂度和空间复杂度往往相互影响。 追求时间复杂性可能会降低空间复杂性的性能。 这意味着它可能会占用更多的存储空间。 相反,获得更好的空间复杂度可能会降低时间复杂度性能,即执行时间变长。 另外,算法的所有性能之间或多或少都有相互影响。 因此,在设计一个算法,特别是大型算法时,要综合考虑算法的各性能、算法的使用频率、算法处理的数据量的大小、算法描述语言的特性、算法运行的机械系统环境等各方面的因素

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。