首页 > 编程知识 正文

数据结构的时间复杂度的解题过程,数据结构算法复杂度汇总

时间:2023-05-06 17:10:44 阅读:32115 作者:3812

在时间复杂度算法的时间复杂度分析中,必须牢记将算法中基本操作的执行次数作为算法时间复杂度的尺度这一说法。 时间的复杂性是基本操作的总次数,而不是运行程序的总时间。 在考试算法问题上总是能找到被称为问题规模的n。 假设要处理的数组元素数为n,执行基本操作的次数为n的函数f(n )。 求其基本操作的执行次数是求f(n )。 从此可以提取f(n )中随着n的增大而增大的最快的项,并将其系数设为1作为时间复杂度的尺度。 要计算时间的复杂性

根据算法中的基本操作以及决定问题规模的基本操作的执行情况计算规模n的函数f(n ),时间复杂度t(n )=o (f ) n )中增长最快的项/项的系数)注意:一般将最坏的情况作为算法时间复杂度的度量例13360 void i=2; )解析:1.找出基本操作。 很明显j; i=2; 均为基本操作2。 可以看出,在决定规模并决定n后,循环是否结束与I有关。 假设设置循环m次后,结束循环。 此时,in将I的最后的值设为1(2m,1 ) 2Mn,因此为了等待,赋予常数k求出m和n的关系。 k是常数,不影响最终时间复杂度) m=((n-1-k )/),即f(n )=(n-1-k )/2。 其中,增长最快是n/2,因此时间复杂度t(n )=o (n ) ) .例2:voidfun(intn(intI,j,x=0; for(I=0; in; I ) for(j=I1; jn; j () x; }}分析:1 .为了找出基本操作x:位于最内层的循环,x; 是基本操作。 2 .确定规模显然n是规模。 接下来,若使用等差数列之和式求出I、j为不同值时的x的执行次数Ijx01n-112n-2.n-1n0基本操作的执行次数:n(n-1 )/2变化最快的项,则时间复杂度为t(n )=o ) n s=i; }1.找到基本操作I和s=i; 均为基本操作2。 确定规模明显以n为规模,执行m次循环后结束。 s1=1、s2=1 2、s3=1 2 3、sm=m(m1 )/2 )求等差数列总和公式(m与n的关系,找出最高项并将其系数定为1,得到t(n )=O )根数n )的程序空间要运行一个程序,除了存储区域和自身使用的指令、常量、变量、输入数据之外,还需要操作数据的工作单元,以及存储现实计算所需信息的辅助区域。 运行程序所需的存储空间由以下两部分组成:

(1)固定部分。 该部分的空间大小与输入输出的数据个数和数值无关。 主要包括指令空间,即代码空间、数据空间、常数、简单变量等所占的空间。 这个部分属于静态空间。

)可变空间、该子空间主要是动态分配的空间、递归堆栈所需的空间等。 这部分空间的大小与算法有关。

一个算法所需的存储空间用f(n )表示。 s(n )=o ) f(n ),其中n为问题的规模,且s(n )表示空间复杂性。

设计算法时,时间的复杂性比空间的复杂性更容易成为问题,因此一般只考虑时间的复杂性。 一般来说,面试或工作时如果没有特别说明的话,复杂度就是时间的复杂度。

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