内容正文:
2.1 数组 (分层作业)
【夯实基础】
1. 数组是一种什么样的数据结构?( )
A. 非线性结构
B. 线性结构
C. 树形结构
D. 图形结构
2. 数组中元素的存储特点是?( )
A. 存储地址不连续
B. 存储地址随机分布
C. 存储地址连续
D. 元素类型可以不同
3.下列哪项操作可以直接通过数组索引完成?( )
A. 插入新元素到数组中间
B. 删除数组中的元素
C. 查看数组中特定位置的元素
D. 对数组进行排序
4. 在静态数组中,数组的长度是?( )
A. 可以在运行时改变
B. 编译时固定
C. 由用户输入决定
D. 动态变化的
5. 数组元素的插入操作通常需要?( )
A. 常数时间
B. 与数组长度成正比的时间
C. 与插入位置之后的元素数量成正比的时间
D. 不可能完成的操作
6. 如果数组a的长度为5,a[2]表示?( )
A. 第一个元素
B. 第二个元素
C. 第三个元素
D. 第四个元素
7. 数组的一个重要特性是什么?( )
A. 元素类型必须一致
B. 插入和删除操作非常快
C. 不需要额外空间进行操作
D. 所有元素的地址不一定连续
8. 动态数组相比于静态数组的主要优势是什么?( )
A. 空间利用率更高
B. 访问速度更快
C. 元素类型可以不同
D. 长度可以在运行时改变
【巩固提升】
9. 在Python中,如何创建一个大小为5的整型数组?( )
A. arr = [5]int
B. arr = new int[5]
C. arr = [0]*5`
D. arr = Array(5, int)
10. 数组的哪个操作通常需要移动大量元素?( )
A. 访问第一个元素
B. 删除末尾元素
C. 在开头插入元素
D. 查找最大值
11. 下列哪项不是数组的缺点?( )
A. 插入和删除效率低
B. 空间利用率可能不高
C. 只能存储一种类型的数据
D. 支持高效的随机访问
12. 数组元素的索引是从哪个数字开始的?( )
A. 0
B. 1
C. -1
D. 根据编程语言而定
13. 若数组长度为n,向已满的数组中插入一个新元素,至少需要移动多少个元素?( )
A. 0
B. n-1
C. n
D. n+1
【拓展应用】
填空1: 二维数组a的大小为n行m列,若a的存储方式为行优先存储,存储a中每个元素所需的存储空间为x,数组元素a[0][0]的存储位置为s,则数组元素a[i][j]的存储位置为_________。
填空2: 数组是一组相同类型数据元素的集合,这些元素在内存中按照_______存储。
参考答案:
【夯实基础】
1. B. 【详解】数组是一种线性数据结构,其中元素按照线性顺序存储。
2. C. 【详解】数组的一大特点是其元素在内存中是连续存储的。
3. C. 【详解】数组索引(或下标)直接提供了访问数组中特定位置元素的能力。通过指定索引值,可以直接读取或修改该位置的元素。插入新元素到数组中间或删除数组中的元素通常需要移动元素或调整数组大小,而查看特定位置的元素仅需使用索引,不需要额外操作。对数组进行排序也不直接通过索引完成,虽然排序过程中会涉及索引的比较和交换,但排序本身是一个复杂的操作,不仅仅依赖于索引访问。
4. B. 【详解】静态数组的长度在编译时确定,程序运行过程中不可改变。
5. C. 【详解】插入元素通常需要将插入点之后的所有元素向后移动一位,因此时间复杂度与移动元素的数量成正比。
6. C 【详解】在大多数编程语言中,数组的索引是从0开始的。因此,如果数组a的长度为5,它的有效索引范围是从0到4。根据这个规则,`a[0]`表示第一个元素,`a[1]`表示第二个元素,依此类推,直到`a[4]`表示第五个元素。所以,`a[2]`直接指向数组中的第三个元素。
7. A. 【详解】数组中的所有元素具有相同的类型,这是其特性之一。
8. D. 【详解】动态数组相较于静态数组的最大优势在于其长度可以根据需要在程序运行时动态调整。
【巩固提升】
9. C. 【详解】在Python中,使用列表来模拟数组,且可以使用乘法操作符快速创建含有相同元素的列表。
10. C. 【详解】在数组开