[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(章节题库+答案解析)

news2024/9/28 3:26:06

练习

选择题

  • 算法的计算量的大小称为计算的( )。
    A.效率
    B.复杂性
    C.现实性
    D.难度

  • 计算机算法指的是解决问题的步骤序列,它必须具备( )三个特性。
    A.可执行性、 可移植性、 可扩充性
    B.可执行性、 确定性、 有穷性
    C.确定性、 有穷性、 稳定性
    D.易读性、 稳定性、 安全性

  • 以下数据结构中,( )是非线性数据结构。
    A.树
    B.字符串
    C.队
    D.栈

  • 连续存储设计时,存储单元的地址( )。
    A.一定连续
    B.一定不连续
    C.不一定连续
    D.部分连续,部分不连续

  • 此程序的复杂度为( )。[大连理工2008研]

    for(int i=0;i<m;i++)
    	for(int j=0;j<n;j++)
    		A[ilj]=i*j;
    

    A. 0 (m2)
    B.0 (n2)
    C.0 (mXn)
    D. O (m+n)

  • 计算算法的时间复杂度是属于一种( )。 [北京理工2005研]
    A.事前统计的方法
    B.事前分析估算的方法
    C.事后统计的方法
    D.事后分析估算的方法

  • 以下属于逻辑结构的是( )。 [西安电子2001研]
    A.顺序表
    B.哈希表
    C.有序表
    D.单链表

  • 以下数据结构中,哪一个是线性结构? ( ) [北方交通大学2001研]
    A.广义表
    B.二叉树
    C.稀疏矩阵
    D.串

  • 下面说法错误的是 ()。
    (1) 算法原地工作的含义是指不需要任何额外的辅助空间
    (2) 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n) 的算法
    (3) 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
    (4) 同一个算法,实现语言的级别越高,执行效率就越低
    A. (1)
    B. (1), (2)
    C. (1), (4)
    D. (3)

判断题

  • 数据元素是数据的最小单位。 ( )
  • 数据的逻辑结构是指数据的各数据项之间的逻辑关系。 ( )
  • 算法的优劣与算法描述语言无关,但与所用计算机有关。 ( )
  • 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 ( )
  • 抽象数据类型与计算机内部表示和实现无关。 ( )

填空题

  • 数据结构中评价算法的两个重要指标是______。
  • 数据结构是研讨数据的 1______和 2______以及它们之间的相互关系,并对与这种结构定义相应的 3______,设计出相应的 4______。
  • 一个算法具有5个特性:1______、2______、3 ______、有零个或多个输入、 有一个或多个输出。
  • 抽象数据类型的定义仅取决于它的一组____, 而与____无关,即不论其内部结构如何变化,只要它的___不变, 都不影响其外部使用。[山东大学2001研]

简答题

分析以下程序段中语句4的频度以及该程序段的时间复杂度。

for(i=0;i<n;i++) // 1
{
	y=y+1; // 2
	for(j=0;j<=2*n;j++) // 3 
		x++; // 4
}

分析以下算法的时间复杂度。

void fun(int n)
{
	int i=0;
	int s=0; .
	while(s<n)
	{
		++i; 
		s=s+i;
	}
}

以下算法的时间复杂度为多少?

void hanoi(int n,char x,char y,char z)
{
	if(n==1)
		printf("'move %c to %c\n",x,z);
	else
	{
		hanoi(n-1 ,x,z,y);
		printf( "move%cto%c\n",x,2);
		hanoi(n-1,y,x,z);
	}
}

答案与解析

选择题

算法的计算量的大小称为计算的( )。

A.效率
B.复杂性
C.现实性
D.难度
【答案】B
【解析】算法复杂度通常分为时间复杂度和空间复杂度,算法的计算量的大小可以用时间复杂度衡量,即可以称为计算的复杂度。

计算机算法指的是解决问题的步骤序列,它必须具备( )三个特性。

A.可执行性、 可移植性、 可扩充性
B.可执行性、 确定性、 有穷性
C.确定性、 有穷性、 稳定性
D.易读性、 稳定性、 安全性
【答案】B
【解析】一个算法通常需要具备五大特性:有穷性;确定性;可执行性;输入一个算法有零个或多个输入;输出一个算法有零个或者多个输出,其中前三项必须具备。

以下数据结构中,( )是非线性数据结构。

A.树
B.字符串
C.队
D.栈
【答案】A
【解析】非线性结构是指存在一对多或者多对一的关系。常见的非线性结构有树结构和图结构。

连续存储设计时,存储单元的地址( )。

A.一定连续
B.一定不连续
C.不一定连续
D.部分连续,部分不连续
【答案】A
【解析】连续存储是指数据的物理存储相连,即存储单元的地址是连续的。

此程序的复杂度为( )。[大连理工2008研]

for(int i=0;i<m;i++)
	for(int j=0;j<n;j++)
		A[ilj]=i*j;

A. 0 (m2)
B.0 (n2)
C.0 (mXn)
D. O (m+n)

[答案] C
[解析]时间复杂度是指基本操作重复执行次数的阶数T(n) =O(f(n))。基本操作为A[il[j]=i*j,该语句的执行次数与外层的两个循环次数相等,为mXn,因此,算法的复杂度为0 (mXn)。

计算算法的时间复杂度是属于一种( )。 [北京理工2005研]

A.事前统计的方法
B.事前分析估算的方法
C.事后统计的方法
D.事后分析估算的方法

[答案] B
[解析]度量一个程序的执行时间通常有两种方法:
①事后统计。
②事前分析估计。
算法的时间复杂度是指算法中基本操作重复执行的次数的阶数,算法的时间复杂度是在程序运行之前对算法所消耗资源的一种估算方法,计算算法的时间复杂度属于事前分析估算的方法。

以下属于逻辑结构的是( )。 [西安电子2001研]

A.顺序表
B.哈希表
C.有序表
D.单链表

[答案] C
[解析]顺序表是线性表的顺序存储结构;哈希表是存储结构(散列存储结构);单链表是线性表的链式存储结构;有序表是指已经按照某一关键字排好序的线性表,它是逻辑结构。因此,C项正确,而ABD三项都是数据元素在计算机中的存储结构,属于物理结构,而不是题目要求的逻辑结构。

以下数据结构中,哪一个是线性结构? ( ) [北方交通大学2001研]

A.广义表
B.二叉树
C.稀疏矩阵
D.串

[答案] D
[解析]线性结构:数据元素之间存在一对一的关系,常见的线性结构有:线性表、栈、队列、双队列、数组、串。非线性结构指存在多对一或者一对多的关系,逻辑特征上表现为一个结点可能有多个前驱结点或多个后继结点,常见的非线性结构有:二维数组、多维数组、树、图、广义表等。广义表(又称列表)是一种非线性的数据结构,是线性表的一种推广。

下面说法错误的是 ()。

(1) 算法原地工作的含义是指不需要任何额外的辅助空间
(2) 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n) 的算法
(3) 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
(4) 同一个算法,实现语言的级别越高,执行效率就越低
A. (1)
B. (1), (2)
C. (1), (4)
D. (3)

[答案] C
[解析]
①一个可执行程序可能涉及中间变量和数组等,需要额外的存储空间,如果这个额外空间相对于问题的规模(输入数据)来说是个常数,称之为原地工作,辅助空间为O (1)。
②对于相同的数据规模,O(n)的效率显然优于O(2n)。
③算法在最坏情况下的时间复杂度,指算法计算量可能达到的最大值,是估算算法执行时间的一个上界
④编译链接后的最终的机器指令操作的次数越少,说明该语言在某种编译链接环境下效率越高,实际上即使同一种语言在不同的编译环境下,也有可能不同。
[注意]在对错判断题中忌“绝对化”,当出现一定,任何等表示绝对性的词语的时候需要慎重对待。

判断题

数据元素是数据的最小单位。 ( )

【答案】 ×
【解析】数据项是数据的不可分割的最小单位,而数据元素是数据的基本单位。

数据的逻辑结构是指数据的各数据项之间的逻辑关系。 ( )

【答案】 ×
【解析】数据的逻辑结构是指数据元素之间的逻辑关系。

算法的优劣与算法描述语言无关,但与所用计算机有关。 ( )

【答案】 ×
【解析】算法的优劣取决于它的时间复杂度和空间复杂度有关,与算法描述语言和所用计算机都无关。

顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 ( )

【答案】 ×
【解析】前者正确,后者错误。 顺序存储方式在插入、删除元素时需要挪动大量的元素,执行效率较低。

抽象数据类型与计算机内部表示和实现无关。 ( )

【答案】 √
【解析】抽象数据类型只表示数据的逻辑结构,与计算机内部表示和实现无关。

填空题

数据结构中评价算法的两个重要指标是______。

【答案】算法的时间复杂度和空间复杂度

数据结构是研讨数据的 1______和 2______以及它们之间的相互关系,并对与这种结构定义相应的 3______,设计出相应的 4______。

【答案】逻辑结构;物理结构;操作(运算);算法

一个算法具有5个特性:1______、2______、3 ______、有零个或多个输入、 有一个或多个输出。

【答案】有穷性;确定性;可行性

抽象数据类型的定义仅取决于它的一组____, 而与____无关,即不论其内部结构如何变化,只要它的___不变, 都不影响其外部使用。[山东大学2001研]

[答案]逻辑特性;在计算机内部如何表示和实现;数学特性

简答题

分析以下程序段中语句4的频度以及该程序段的时间复杂度。

for(i=0;i<n;i++) // 1
{
	y=y+1; // 2
	for(j=0;j<=2*n;j++) // 3 
		x++; // 4
}

答:
语句的频度是指该语句被重复执行的次数。在本题中语句④执行的次数是内外两层循环的次数,即n(2n+1) =2n2+n, 因此该语句的频度是2n2+n。(2n+1是由于内层循环的j从0加到2n,每次一共会执行2n+1次内层循环)
时间复杂度可以用算法中的基本操作重复执行的次数来度量,本程序段中的语句④即为基本操作,所以该算法的时间复杂度 T(n) = O(2n2+n) = O(n2)。

分析以下算法的时间复杂度。

void fun(int n)
{
	int i=0;
	int s=0; .
	while(s<n)
	{
		++i; 
		s=s+i;
	}
}

答:显然n为问题规模,基本操作为语句“++i"和“s=s+i”。变量i与s都从0开始,假设循环执行m次结束,即当循环m次时,m=n,则有 s 0 = 0 , s 1 = 1 , s 2 = 1 + 2 = 3 , s 3 = 1 + 2 + 3 = 6 , . . , s m = m ( m + 1 ) 2 s_0=0, s_1=1, s_2=1+2=3, s_3=1+2+3=6,.., s_m=\frac{m (m+1)}{2} s0=0,s1=1,s2=1+2=3,s3=1+2+3=6..,sm=2m(m+1)(其中 s m s_m sm为执行到第m次的时候s的值),可得 m ( m + 1 ) 2 < n \frac{m (m+1)}{2} < n 2m(m+1)<n,由一元二次方程的求根公式可得
m = − 1 + 8 n + 1 2 m=\frac{-1+\sqrt{8n+1}}{2} m=21+8n+1
则基本语句关于问题规模n的函数为
f ( n ) = − 1 + 8 n + 1 2 f(n)=\frac{-1+\sqrt{8n+1}}{2} f(n)=21+8n+1
算法的时间复杂度为
T ( n ) = O ( f ( n ) ) = O ( n ) T(n) = O(f(n)) = O(\sqrt{n}) T(n)=O(f(n))=O(n )

以下算法的时间复杂度为多少?

void hanoi(int n,char x,char y,char z)
{
	if(n==1)
		printf("'move %c to %c\n",x,z);
	else
	{
		hanoi(n-1 ,x,z,y);
		printf( "move%cto%c\n",x,2);
		hanoi(n-1,y,x,z);
	}
}

答:
设函数hanoi (n)的执行时间为T(n),则hanoi (n-1)的执行时间为T (n-1)。
有:
当n=1时,T (1) =1;
当n>1时,T (n)=2T(n-1)+1。
所以有:
T(n)
= 2T(n-1) +1
=2(2T(n-2) +1) +1
=22T(n-2) +1+2
=22 (2T (n-3) +1) +1+2
= 23 T (n-3) +1+2+22
= …
= 2n-1T(1) +1+2+22+…+2n-2
= 2n-1+2n-1-1
=2n-1
=O (2n)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“快速掌握如何用FFmpeg在Python中截取定时间隔的MP4视频画面“

目录 简介&#xff1a; 源代码&#xff1a; 源代码说明&#xff1a; 这段代码中&#xff0c;首先定义了输入视频文件名、字体文件路径和输出图像文件名格式。然后使用subprocess模块的call函数调用FFmpeg命令。FFmpeg命令被定义为一个列表&#xff0c;其中每个元素都是命令中…

RocketMQ5.0.0消息消费<二> _ 消息队列负载均衡机制

目录 一、消费队列负载均衡概览 二、消费队列负载均衡实现 1. 负载均衡UML 2. 启动RebalanceService线程 3. PUSH模式负载均衡 三、负载均衡策略 四、参考资料 一、消费队列负载均衡概览 RocketMQ默认一个主题下有4个消费队列&#xff0c;集群模式下同一消费组内要求每个…

合并链表相关的练习

目录 一、合并两个有序链表 二、两数相加 一、合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&…

熬夜30天吃透这九大Java核心专题,我收割了3个大厂offer

这次一共收割了3个大厂offer&#xff0c;分别是蚂蚁金服、美团和网易&#xff0c;特意分享这次对我帮助非常大的宝典资料&#xff0c;一共涉及九大核心专题&#xff0c;分别是计算机网络、操作系统、MySQL、Linux、JAVA、JVM、Redis、消息队列与分布式、网站优化相关&#xff0…

MySQL8启动错误“Neither found #innodb_redo subdirectory, nor ib_logfile* files”

今天做MySQL备份文件回复测试,用来检验MySQL备份文件可用性。 MySQL版本8.0.32 备份文件为腾讯云MySQL实例,版本8.0 使用xtrabackup恢复备份。执行过程顺利,启动MySQL时发生错误。提示如下: 注意,这里使用了systemctl stop mysql。虽然启动失败了,但是如果不执行这条…

全国青少年软件编程(Scratch)等级考试一级真题——2019.9

青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09;分数&#xff1a;100 题数&#xff1a;37一、单选题(共25题&#xff0c;每题2分&#xff0c;共50分)1.小明在做一个采访的小动画&#xff0c;想让主持人角色说“大家好&#xff01;”3秒…

AcWing 3555. 二叉树

第一种做法是dfs。但是注意&#xff0c;如果是非常单纯的dfs&#xff0c;要把每个节点可以到达的所有节点都记录下来&#xff08;父节点两个子节点&#xff09;。如果只记录了子节点&#xff0c;没记录父节点&#xff0c;就失去了一个方向&#xff0c;肯定出错。 例如求2和6之…

Git常见问题:Your branch and ‘xxx/xxx‘ have diverged

报这个错就是因为你和远程库出现分叉了&#xff0c;具体表现是是由于同一个分支有多人修改&#xff0c;多人commit造成的 用户1操作 用户2操作 T1 git co -b brv_1 git co -b brv_1 T2 git add test2.java git commit -m m2 git push T3 git add test1.java git comm…

VR全景博物馆,打造7*24小时的线上参访体验

导语&#xff1a;博物馆作为人们了解历史、文化和艺术的重要场所&#xff0c;现在可以通过VR全景技术来进行展览&#xff0c;让参观者身临其境地感受历史文化的魅力。本文将介绍博物馆VR全景的特点、优势&#xff0c;以及如何使用VR全景技术来丰富博物馆的展览和教育活动。什么…

数据库:Mysql数据库安装及使用

目录 一、数据库介绍 1、基本概念 2、数据库类型 3、版本演变 二、Mysql安装 1、官网下载yum安装 2、手动配置yum安装 三、Mysql基本操作 1、登录与改密 2、检测数据库健康 3、 库的创建与使用 4、数据类型 5、修饰符 6、表的创建与使用 7、分组查询 8、查询排…

hive之正则函数研究学习regex/regex_replace/regex_extract

首先学习这个之前要先知道一些正则的基本知识。 随便百度一下正则表达式 – 元字符 | 菜鸟教程 字符描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如&#xff0c;n 匹配字符 "n"。\n 匹配一个换行符。序列 \\ 匹…

残酷现实:大部分的App小程序,日活<100

残酷现实:99%的APP小程序&#xff0c;日活<100 日活跃用户数量(DAU&#xff09;是一个核心指标 Daily Active Users 互联网的难度系数一路拉高 只有流过血的战士&#xff0c;才能意识到战场的残酷 趣讲大白话&#xff1a;赵本山小品台词&#xff0c; 残酷的现实已直逼我心理…

千访 | 互动千万!小红书博主修炼手册

采访手记&#xff1a; 截止到目前&#xff0c;姜老师的护肤成分室在小红书的粉丝量已达150W。在赛道内卷的美妆区&#xff0c;突破真人出镜讲解&#xff0c;采用二次元漫画&#xff0b;变美内容结合&#xff0c;成为护肤动画领域的头部大号。 接下来&#xff0c;就让我们通过…

[算法]希尔排序——插入排序的升级

参考&#xff1a;《漫画算法-小灰的算法之旅》 目录 1、希尔排序的思想 2、例子 3、希尔排序代码 4、希尔排序的优化 5、希尔排序是不稳定排序 问&#xff1a;什么情况下插入排序的工作量会比较小呢&#xff1f; 答&#xff1a;首先&#xff0c;当数组元素较小时&#xf…

基于Halcon的MLP(多层感知神经网络)分类器分类操作实例

一、介绍 人工神经网络(Artificial Neural Network,ANN)简称神经网络(Neural Network,NN)或类神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。 MLP神经网络是一种基于神经网络、动态的分类器。MLP分类器使用神经…

C51---智能感应垃圾桶

1.器件&#xff1a;C51、蜂鸣器、SG90舵机、HC-SR04超声波测距 2.实现功能&#xff1a;超声波感应&#xff0c;舵机转动打开垃圾桶&#xff0c;蜂鸣器发出提示&#xff0c;LED灯亮 3.代码&#xff1a; #include "reg52.h" #include "intrins.h" //距离小…

关于进程与进程调度

目录什么是进程进程管理进程的结构体(PCB)里的属性并行与并发什么是进程 一个运行起来的程序就是进程. 比如文件名是以 exe 结尾的就是一可执行文件(程序) 双击QQ.exe文件, 这个程序就跑起来了, 它在系统中形成了一个进程, 那我们怎么看到进程呢? 可以打开任务管理器, 点开进…

Spark MLlib 模型训练

Spark MLlib 模型训练决策树随机森林GBDTSpark MLlib 开发框架下 : 监督学习 : 回归 (Regression) , 分类 (Classification) , 协同过滤 (Collaborative Filtering)非监督学习 : 聚类 (Clustering) 、频繁项集 (Frequency Patterns) 例子分类 : 算法分类 : 算法分类算法子分类…

探究SMC局部代码加密技术以及在CTF中的运用

前言 近些日子在很多线上比赛中都遇到了smc文件加密技术,比较出名的有Hgame杭电的比赛,于是我准备实现一下这项技术&#xff0c;但是在网上看了很多文章&#xff0c;发现没有讲的特别详细的&#xff0c;或者是无法根据他们的方法进行实现这项技术&#xff0c;因此本篇文章就是…

Springboot怎么快速集成Redis?

前言其实在Springboot中集成redis是一个非常简单的事情&#xff0c;但是为什么要单独输出一篇文章来记录这个过程呢&#xff1f;第一个原因是&#xff0c;我记性不是太好&#xff0c;这次把这个过程记录下&#xff0c;在新的项目搭建的时候或者需要在本地集成redis做一些其他相…