数据结构教程第三版第一章课后习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void mergesort(int a[],int i,int j)
{ int m;
if (i!=j)
{ m=(i+j)/2;
mergesort(a,i,m);
mergesort(a,m+1,j);
merge(a,i,j,m);
}
}
求 mergesort(a,0,n-1)的时间复杂度。€ a[i..m]和
} else { if (b>c)
{ if (a>c) printf("%d,%d,%d\n",c,a,b); else printf("%d,%d,%d\n",a,c,b);
}
else printf("%d,%d,%d\n",a,b,c);
}
}
本算法的时间复杂度为O(1)。 n3o算法ƒi:
void maxmin(int A[],int n,int &max,int &min)
{ i=1,k=100;
while (i<n)
{ k=k+1;
i+=2;
}
}
n2o
void fun2(int b[],int n)
{ int i,j,k,x;
for (i=0;i<n-1;i++)
{ k=i;
for (j=i+1;j<n;j++)
if (b[k]>b[j]) k=j;
x=b[i];b[i]=b[k];b[k]=x;
}
}
n3o
void fun3(int n)
{ int i=0,s=0;
while (s<n)
{
i++;
s=s+i;
}
}
答:n1o设 for ‹Œf Ž 数为 T(n),‘:
i=2T(n)+1’n-1,即 T(n)’
n
- 1 =O(n)。
2
n2o算法 的基本运算f 是 if (b[k]>b[j]) k=j,€Ž
1.1 简述数据与数据元素的关系与区别。
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。
数
据
元
素
是
数
据
的基本单位,是数据的一个元素。数据元素与数据之间的关系是元素与集
合之间的关系。
1.2 数据结构和数据类型有什么区别?
答:数据结构是相互之间存在一种或多种特定关系的数据元素的集合, 一般包括三个方 面的内容,即数据的逻辑结构、存储结构和数据的运算。 而数据类型是一个值的集合和定义 在这个值集上的一组运算的总称。
{ int i;
min=min=A[0];
for (i=1;i<n;i++)
{
if (A[i]>max) max=A[i];
if (A[i]<min) min=A[i];
}
}
本算法的时间复杂度为O(n)。
1.5 设 n 为‰w数,lmijŠ种算法关r n 的时间复杂
度。 n1o
void fun1(int n)
∑n 1
2
T(n)= n2 1 = n (n i 1 )=
i0 ji 1 i
0
n(n 1 )
=O(n2)
2
数 T(n)为:
n3o设 while ‹Œf Ž 数为T(n),‘:
T (n ) 1 )
(n )(T
s=1+2+“+T(n)=
2
’n-1,‘ T(n)=O( n )。
1.6 有以i”•算法er对数组 a[i..j]的元素– •k— :
,merge(a,i,j,m)er˜个有 ™ j
a[m+1..j]的合k,是š”•函数,它的时间复杂度为 O(合k的元素个数)。
答:设mergesort(a,0,n-1)的Ž 数为T(n),分›œ|以i”•关系:
T(n)=
O(1) 2T( n )+O(n)
2
n=1 n>1
O(n)为 merge()所 的时间,设为 cnnc 为žŸo。 ¡ :
for (i=0;i<n;i++) for (j=0;j<n;j++) s=s+A[i][j];
return(s); } 本算法的时间复杂度为 „…†2‡ˆ
n2o算法ƒi:ˆ
void order(int a,int b,int c) { if (a>b)
{ if (b>c) printf("%d,%d,%d\n",c,b,a); else if (a>c) printf("%d,%d,%d\n",b,c,a); else printf("%d,%d,%d\n",b,a,c);
T(n)=2T( n )+cn=2(2T(
n )+ cn )+cn=22T(
n
n
Leabharlann Baidu
)+2cn=23T( )+3cn
2
22 2
22
23
=“
=2kT( n )+kcn=2kO(1)+kcn
2k
n £¤
¢r 2k
r 1,‘ k=log2n。
所以 T(n)= 2log2n O(1)+cnlog2n=n+cnlog2n=O(nlog2n)。
1.3 设 3 个表示算法频度的函数 f、g 和 h 分别 为: f(n)=100n3+n2+1000 g(n)=25n3+5000n2 h(n)=nl.5+5000nlog2n
求它们对应的时间复杂度。
答:f(n)=100n3+n2+1000=O(n3)
g(n)=25n3+5000n2=O(n3)
当n→∞时, n >log2n,所以 h(n)=nl.5+5000nlog2n=O(n1.5)。
1.4 e C/C++fgh述ij算法,klm算法的时间复杂
度。 n1o求一个 n p方q的所有元素之和。
n2o 对 rst 的 uv 三 个 w 数 , x 它 们 yz{|} 的 ~
sm
。
n3o对rst的uvn 个w数,sm€ 的‚}和‚{元素。
答:n1o算法ƒi:
int sum(int A[n][n],int n) { int i,j,s=0;