数据结构各章习题及答案.docx
- 187****3657个人认证 |
- 2021-04-20 发布|
- 554.03 KB|
- 47页
数据结构习题及解答
第1章 概述
【例 1-1 】分析以下程序段的 复 度。
for(i=0;i<n;i++)
for(j=0;j<m;j++)
A[i][j]=0;
解: 程序段的 复 度 O(m*n) 。
【例 1-2 】分析以下程序段的 复 度。
i=s=0;
①
while(s<n)
{ i++;
②
s+=i;
③
}
解: 句① 句,其 行次数 1 次,所以其 复 度 O(1) 。 句②和
句③构成 while 循 句的循 体, 它 的 行次数由循 控制条件中 s 与 n 的 确定。 假
定循 重复 行 x 次后 束, 句②和 句③各重复 行了 x 次。其 复 度按 性
累加 O(x) 。此 s 与 n 足关系式: s≥n,而 s=1+2+3+?+x。所以有: 1+2+3+? +x ≥n,可以推出:
x=
x 与 n 之 足 x=f( ),所以循 体的 复 度 得到 程序段的 复 度 O()。
【例 1-3 】分析以下程序段的 复 度。
O() , 句①与循 体由 性累加
i=1;
①
while(i<=n)
i=2*i;
②
解:其中 句①的 行次数是
1, 句②的 行次数
f(n)
, 有:。
得: T( n) =O()
【例
1-4 】有如下 函数
fact(n)
,分析其 复 度。
fact(int n)
{ if(n<=1)
return(1); ①
else
return(n*fact(n-1));
②
}
解:设 fact ( n)的运行时间函数是 T(n) 。该函数中语句①的运行时间是
②的运行时间是 T(n-1)+ O(1) ,其中 O(1) 为常量运行时间。
由此可得 fact ( n)的时间复杂度为 O(n) 。
O(1) ,语句
习题 1
一、单项选择题