- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 数组 4.1 考纲要求及分析 考纲要求: 特殊矩阵的压缩存储 考纲分析: 本章不属于重点考核的内容,主要以选择题的形式出现。 本章要求: (1). 理解数组的定义和存储方法,注意数组元素具有相同的数 据类型,因此,每个元素占用的存储单元数相同; (2). 掌握特殊矩阵的压缩存储方法,以及将特殊矩阵压缩存储后矩阵元素的寻找方法; 关于矩阵元素的寻址,通常有两种出题方式: (1). 给出压缩存储的首地址和每个元素占用的地址空间,求矩阵中某元素在存储数组中的位置; (2). 直接求矩阵中某元素在存储数组中的下标 4.2 多维数组 考核知识点: 1. 数组的定义:是由类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素(简称为元素),每个元素受n(n≥1)个线性关系的约束,每个元素在n个线性关系中的序号i1,i2,……in称为该元素的下标,并称该数组为n维数组。 2. 数组与线性表的关系 数组是线性表的推广 4.2 多维数组 考核知识点: 3. 数组的基本操作:数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除的操作。 数组中通常只有两种操作: (1). 读取:给定一组下标,读取相应的数组元素; (2). 修改:给定一组下标,存储或修改相应的数组元素; 4.2 多维数组 考核知识点: 4. 数组的存储结构与寻址:由于在数组上一般不能做插入、删除的操作,所以数组通常采用顺序存储结构。 通常有两种映像方法: (1). 按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素; (2). 按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素; 数组的按行优先存储 设二维数组A是: A[c1..d1,c2..d2](c1≤i≤d1,c2≤j≤d2) 其中c1、c2和d1、d2分别为二维数组A的边界的下界和上界,每个数组元素占用L个存储单元 LOC(i,j)=LOC(c1,c2)+[(i-c1)*(d2-c2+1)+(j-c2)]*L 练习1: 数组A[0..5,0..6],每个元素占5个字节,首地址为1000,按列优先存储,则A[5,5]的存储地址是 ( )。 分析: 因为是按列优先,所以在A[5,5] 前已经存储了0~4列共5列,每列有6个元素,所以共5×6=30个元素。在第5列上, A[5,5]之前有5个元素,则A[5,5]之前共有30+5=35个元素,所以其地址为: 1000+35*5=1175 练习2: C语言中定义的一维数组a[50]和二维数组b[10][5]具有相同的首地址,即(a[0])=(b[0][0]),再以列序为主时,a[18]的地址和( )的地址相同。 A. b[1][7] B. b[1][8] C. b[8][1] D. b[7][1] 分析: a[18]是数组的第19个元素, b[8][1]=1*10+9=19, 即b[8][1]是数组b按列优先存储的第19个元素。 C为答案, 即(a[18])=(b[8][1]) 。 练习3: 二维数组A的每个元素是由6个字符组成的串,行下标从0~8,列下标从0~9; 1). 存放A至少需要多少个字节? 解: A共9行10列,所以有90个元素,存放A至少需要90*6=540个存储单元(字节) 练习3: 二维数组A的每个元素是由6个字符组成的串,行下标从0~8,列下标从0~9; 2). A的第8列和第5行共占多少个字节? 解: 第8列共9个,第5行共10个,但是行、列处有一个交叉,所以共有18个元素,18*6=108个字节。 数组部分 算法设计题 多维数组的算法设计以二维数组为重点。从考核目标的角度来说,数组的算法设计主要考查的是程序设计基础,因此,在DS中不是考试的重点。 算法设计题1 给定n×m矩阵B[a..b,c..d],满足 B[i,j] ≤ B[i,j+1] (a ≤i ≤b, c ≤j ≤d-1)和 B[i,j] ≤ B[i+1,j] (a ≤i ≤b-1, c ≤j ≤d)。 试设计算法评定 x 是否在B中,要求时间复杂 度为O(m+n) 算法设计题1的另外一种表述: 数组B[0..m-1,0..n-1]的数据在行、列方向上都按从小到大的顺序排列,且整型变量x中的数据在B中一定存在。试设计算法,找出一对满足B[i,j]=x的i,j值。要求比较次数不超过m+n。 如4行5列的矩阵B从1~20。查找17。 算法分析: 矩阵中元素已经按行和按列排好序,要求查找的时间复杂度为O(m+n
文档评论(0)