数据结构习题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章算法

一、选择题

1.算法的时间复杂度是指()。

A)执行算法程序所需要的时间

B)算法程序中的指令条数

C)算法执行过程中所需要的基本运算次数

D)算法程序的长度

2.算法的空间复杂度是指()。

A)算法程序的长度

B)算法程序所占的存储空间

C)算法执行过程中所需要的存储空间

D)算法程序中的指令条数

3.下面()的时间复杂度最好(即执行时间最短)。

logn)

O()O(n ) B)A2logn2 ) D)O(n)

C)O(n24.下面累加求和程序段的时间复杂度为()。

int sum(int a[],int n)

{

int i, s=0;

for (i=0;i

s+=a[i];

return s;

}

logn ) )O(A)O(1 ) B22)

)O(nC)O(n ) D中的算法,c[][]相加的结果存放到b[][]n阶矩阵5.下面是将两个n阶矩阵a[][]与。该算法的时间复杂度为()void matrixadd(int a[][],int

b[][],c[][],int n)

{

int i,j;

for (i=0;i

for(j=0;j

c[i][j]=a[i][j]+b[i][j];

}

nlog) )O(1 ) B)O(A22) )O(nO( n ) DC)。6.下面程序段的时间复杂度为() 1

int i=0,s1=0,s2=0;

while(i

{

if(i%2)

s1+=i;

else

s2+=i;

i++;

}

nlog) O(A)O(1 ) B)22) )O(nC)O(n ) D )。

7.下面程序段的时间复杂度为(

int prime(int n)

{

int i=1;

int x=(int)sqrt(n);

while(i<=x)

{

i++;

if(n%i==0)

break;

}

if(i>x)

return 1;

else

return 0;

}

nlog) O(O(1 ) BA))2n) O()CO(n ) D))下面程序段的时间复杂度为(8.int fun(int n)

{

int i=1,s=1;

while(s

{

i++;

s+=i;

}

return i;

}

nlog)

O(n/2) BA))O(2 2

n) )O(C)O(n ) D9.下面程序段的时间复杂度为()

int i,j,m,n,a[][];

for(i=0;i

for(j=0;j

a[i][j]=i*j;

22

) )O(nA)O(m) BO(m+n) )C)O(m*n ) D )10. 下面程序段的时间复杂度为(

int sum1(int n)

{

int i,p=1,s=0;

for(i=1;i<=n;i++)

{

p*=i;

s=s+p;

}

return s;

}

nlog) )O(A)O(1 ) B22)

O(n ) D)O(nC)

二、填空题复杂度。1.算法复杂度主要包括时间复杂度和2/ n ,其数量级表示为。+2n+5 2.一个算法的时间复杂度的计算式为 ( 3n)

读取一a[n]中顺序查找出一个最大值元素的平均时间复杂度为,3.从一维数组。中任一元素的时间复杂度为个二维数组b[m][n]语句的执行次数,p*=j 4.在下面程序段中,s = s+p语句的执行次数为

。为,该程序段的时间复杂度为

int i=0, s=o;

while(++i <=n)

{

int p=1;

for(int j=1; j<=i ; j++ )

p*=j ;

s=s+p ;

}

通常用平均性态分析和两种方式来确定一个算法的工作量。5.

简答题三、

3.什么是算法?算法的基本特征是什么?

4.

3

5.算法的两种基本要素是什么?

6.递归是算法的基本方法之一,其基本思想是什么?

7.算法的描述方法有多种,试说出任意三种方法。

四、编写出求下列问题的算法

1.比较两个整型数据a1与a2的大小,对于a1 > a2、a1 == a2、a1< a2这三种不同情况应分别返回“>”、“=”、“<”字符。

2.求一维double型数组a[n]中的所有元素之乘积。

3.假定一维整型数组a[n]中的每个元素值x均在[0,200]区间内,分别统计出落在0≤x

< 20、20≤x<50、50≤x<80、80≤x<130、13 ≤x≤200各区间内的元素个数。

参考答案

一、单选题

1.C

2.C

3.B

4.C

5.D

6.C

7.D

8.D

9.C 10.C

二、填空题

1. 空间

2. O(n)

2) O(nn(n+1)/2,3.O(n),O(1) 4. n,最坏情况复杂性5.

三、简答题 1. 答案:所谓算法是指解题方案的准确而完整的描述。 4)拥有足够的情报。确定性;3)有穷性;答案:算法的基本特征为:2. 1)可行性;2)答案:算法通常由两种基本要素组成;一是对数据对象的运算和操作;二是算法的3.

控制结构。答案:人们在解决一些复杂问题时,为了降低问题的复杂程度,一般总是将问题逐4.

实际上并没有对问题这种将问题逐层分解的过程,层分解,最后归结为一些最简单的问题。再沿着原来分解的逆过程逐步进行综而只是当解决了最后那些最简单的问题后,进行求解。合,这就是递归的基本思想。 5.答案:一个算法可以用多种方式来描述,如自然语言、程序语言、流程图等。四、算法设计的大小。a1比较两个整型数据与a21.char compare(int a1,int a2)

{

if(a1>a2)

return >;

elase

if(a1==a2)

=;

return

4

elase

return <;

}

2.求一维double型数组a[n]中的所有元素之乘积。

double product(dluble a[],int n)

{

double p=1;

for(int i=0;i< n;i++)

p=p*a[i];

return p;

}

3.统计数组a[n]中的每个元素值x分别落在0≤x<20、20≤x<50、50≤x< 80、80≤x<130、130≤x≤200各区间内的元素个数。

int count(int a[],int n,int c[5]) //用c[5]保存统计结果

{

int d[5]={20,50,80,130,201}; //用d[5]保存各统计区间上限

int i,j;

for(i=0;i

c[i]=0;

相关文档
最新文档