(2)在计算包含调用语句的算法的语句频度时,需考虑到调用发生时在被调用算法中各语
句的执行情况。本题所示的递归调用较之非递归调用的分析更为复杂。
由于 k 等于 n 是算法的出口条件,不妨首先分析算法pp(n)的简单情况,这时各语句的执行频
度分别为:1,n+1,n,0,0,0; 而当 k=n-1,n-2,…,1 时,语句的执行情况和调度情况,如下表所
示。
语句 1 语句 2 语句 3 语句 4 语句 5 语句 6
对于 k=1 即 pp(1)而言,各语句的执行次数还须将调用 pp(2)时的执行次数累计到内,pp(2)
各语句的执行次数又须将调用 pp(3)时执行次数累计到内,……由此可的语句频度如下:
语句1:1+1+…+1=n
语句4:(n+1)+n+…+3=(n-1)(n+4)/2
语句5:n+(n-1)+…+2=(n-1)(n+2)/2
算法的时间复杂度可以基于频度最大的语句,应为O(n2)。
不,事实上,算法的时间复杂度不仅与问题的规模相关,还与输入实例中的元素取值等相关,
但在最坏的情况下,其时间复杂度就是只与求解问题的规模相关的。我们在讨论时间复杂度
时,一般就是以最坏情况下的时间复杂度为准的。
顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑
关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构。
链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附
加的指针字段表示的。由此得到的存储表示称为链式存储结构。
索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。
评论0
最新资源