数据结构习题及答案

2021-09-27 10:59

第1章 算法

一、选择题

1. 算法的时间复杂度是指( )。 A)执行算法程序所需要的时间 B)算法程序中的指令条数

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

2. 算法的空间复杂度是指( )。 A)算法程序的长度

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

C)算法执行过程中所需要的存储空间 D)算法程序中的指令条数

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

A)O(n ) B)O(log2n) C)O(nlog2n ) D)O(n)

2

4.下面累加求和程序段的时间复杂度为( )。 int sum(int a[],int n) {

int i, s=0;

for (i=0;i

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

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]; }

A)O(1 ) B)O(log2n) C)O( n ) D)O(n) 6.下面程序段的时间复杂度为( )。

 

1

2

2

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

if(i%2) s1+=i;

else

s2+=i; i++; }

A)O(1 ) B)O(log2n ) C)O(n ) D)O(n) 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;

}

A)O(1 ) B)O(log2n) C)O(n ) D)O(n) 8.下面程序段的时间复杂度为( )

int fun(int n) {

int i=1,s=1; while(s

i++; s+=i; }

return i; }

A)O(n/2) B)O(log2n)

 

2

2

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

int i,j,m,n,a[][]; for(i=0;i

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

int sum1(int n) {

int i,p=1,s=0; for(i=1;i<=n;i++) {

p*=i;

s=s+p;

}

return s; }

A)O(1 ) B)O(log2n) C)O(n ) D)O(n)

 

二、填空题

1.算法复杂度主要包括时间复杂度和 复杂度。

2.一个算法的时间复杂度的计算式为 ( 3n+2n+5 ) / n ,其数量级表示为 。 3.从一维数组a[n]中顺序查找出一个最大值元素的平均时间复杂度为 ,读取一个二维数组b[m][n]中任一元素的时间复杂度为 。

4.在下面程序段中,s = s+p语句的执行次数为 ,p*=j 语句的执行次数为 ,该程序段的时间复杂度为 。

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. 算法的基本特征是什么?

2

2

2

2

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)

3.O(n),O(1) 4. n,n(n+1)/2,O(n) 5. 最坏情况复杂性 三、简答题

1. 答案:所谓算法是指解题方案的准确而完整的描述。

2. 答案:算法的基本特征为:1)可行性;2)确定性;3)有穷性;4)拥有足够的情报。 3. 答案:算法通常由两种基本要素组成;一是对数据对象的运算和操作;二是算法的控制结构。

4. 答案:人们在解决一些复杂问题时,为了降低问题的复杂程度,一般总是将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解。而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。

5.答案:一个算法可以用多种方式来描述,如自然语言、程序语言、流程图等。 四、算法设计

1.比较两个整型数据a1与a2的大小。

char compare(int a1,int a2) { if(a1>a2) return elase if(a1==a2) return

 

4

2

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

if(a[i]<0; || a[i]>200)

return 0; //数组中数据有错,统计失败 for(j=0;j< 5;j++)

if(a[i]

c[j]++; //使统计相应区间的元素数增1 }

return 1; //表示统计成功 }

5

 


数据结构习题及答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山美版六年级上册品社教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: