收藏 分享(赏)

三 数组与矩阵.pptx

上传人:HR专家 文档编号:6008505 上传时间:2019-03-24 格式:PPTX 页数:53 大小:1.35MB
下载 相关 举报
三 数组与矩阵.pptx_第1页
第1页 / 共53页
三 数组与矩阵.pptx_第2页
第2页 / 共53页
三 数组与矩阵.pptx_第3页
第3页 / 共53页
三 数组与矩阵.pptx_第4页
第4页 / 共53页
三 数组与矩阵.pptx_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、数组和矩阵,多维数组的行主描述形式和列主描述形式 C+支持多维数组,但它无法保证数组下标的合法性。针对一维数组和二维数组分别设计了类Array1D和类Array2D。 一个类Matrix描述矩阵。 一些具有特殊结构的矩阵,如对角矩阵、三对角矩阵、三角矩阵和对称矩阵。 稀疏矩阵(即大部分元素为0的矩阵)的公式化描述和链表描述,抽象数据类型,例4-1上个星期每天的高温(华氏度数)可用如下的数组来表示: high=(sunday,82),(monday,79),(tuesday,85),(wednesday,92),(thursday,88),(friday,89),(saturday,91) 将m

2、onday的温度改变为83: Store(monday,83) 通过执行如下操作,还可以确定friday的温度: Retrieve(friday) 也可以采用如下的数组来描述每天的温度: high=(0,82),(1,79),(2,85),(3,92),(4,88),(5,89),(6,91),C+数组,C+数组的索引(下标)采用如下形式:,行主映射和列主映射,数组内存存储空间的映射 当数组维数为1时(即k=1),使用以下函数:map(i1)=i1,二维数组的映射,三维数组的行主映射,数组score324中的索引按行主次序排列为:,三维数组的行主映射函数为:,类Array1D,尽管C+支持一维

3、数组,但这种支持很不够。 察如下的数组a:inta9 可以访问数组元素a-3,a9和a90 不足: 不能来输出数组: 不能对一维数组进行诸如加法和减法等操作,一维数组的类定义,一维数组的构造函数,重载下标操作符,重载赋值操作符=,重载二元减法操作符,重载一元减法操作符,重载增值操作符,时间复杂性,当T是一个内部C+数据类型(如int,float和char)时,构造函数和析构函数的复杂性为(1) 当T是一个用户自定义的类时,构造函数和析构函数的复杂性为O(size)。,类Array2D,二维数组的构造函数,二维数组的复制构造函数,二维数组的重载操作符,二元减法操作符,乘法操作符,时间复杂度,当T

4、是一个C+内部数据类型时,构造函数和析构函数的复杂性均为O(rows) 当T是一个用户自定义的类时,构造函数和析构函数的复杂性为O(rows*cols)。 复制构造函数及operator的复杂性为O(rows*cols),下标操作符的复杂性为(1),乘法操作符的复杂性(rows*cols*m.cols)。,矩阵,一个mn的矩阵(matrix)是一个m行、n列的表(如图4-3所示),其中m和n是矩阵的维数。最常见的操作就是矩阵转置、矩阵加、矩阵乘。,类Matrix,可用如下的二维整数数组来描述元素为整数的mn矩阵M: Int xmn;或Array2D xmn; 其中M(i,j)对应于xi-1j-

5、1。这种形式要求使用数组的索引来指定每个矩阵元素。 这种变化降低了应用代码的可读性,同时也增加了出错的概率。,类Matrix,类Matrix的构造函数,类Matrix的下标操作符,类Matrix的减法操作符,类Matrix的乘法操作符,时间复杂度,当T是一个内部数据类型时,矩阵构造函数复杂性为O(1) 当T是一个用户自定义的类时,构造函数的复杂性为O(rows*cols)。 复制构造函数的复杂性为O(rows*cols),下标操作符的复杂性为(1),乘法操作符的复杂性O(rows*cols*m.cols)。所有其他矩阵操作符的渐进复杂性分别与Array2D类中对应操作符的渐进复杂性相同。,特殊

6、矩阵,方阵是指具有相同行数和列数的矩阵。一些常用的特殊方阵如下: 对角矩阵(diagonal)M是一个对角矩阵当且仅当ij时有M(i,j)=0。如图4-4a所示。 三对角矩阵(tridiagonal)M是一个三对角矩阵当且仅当|i-j|1时有M(i,j)=0。 下三角矩阵(lowertriangular)M是一个下三角矩阵当且仅当ij时有M(i,j)=0。 对称矩阵(symmetric)M是一个对称矩阵当且仅当对于所有的i和j有M(i,j)=M(j,i)。,例4-3考察佛罗里达州的六个城市Gainesville,Jacksonville,Miami,Orlando,Tallahassee和Ta

7、mpa。将这六个城市从1至6进行编号。任意两个城市之间的距离可以用一个66的矩阵来表示。矩阵的第i行和第i列代表第i个城市,distance(i,j)代表城市i和城市j之间的距离。,二维数组来描述一个元素类型为T的nn对角矩阵D:Tdnn 使用数组元素di-1j-1来表示矩阵元素D(i,j),这种描述形式所需要的存储空间为n2*sizeof(T)。 使用数组元素di-1来表示矩阵元素Di,i。存储空间?,DiagonalMatrix类,Store,Retrieval,三对角矩阵,在一个nn三对角矩阵T中,非0元素排列在如下的三条对角线上: 1)主对角线i=j。 2)主对角线之下的对角线(称低对

8、角) i=j+1。 3)主对角线之上的对角线(称高对角) i=j-1。,TridiagonalMatrix类,三角矩阵,对于这两种情况,非0区域的元素总数均为:,LowerMatrix类,对称矩阵,一个nn的对称矩阵可以用一个大小为n(n+1)/2的一维数组来描述,可参考三角矩阵的存储模式来存储矩阵的上三角或下三角。,稀疏矩阵,如果一个mn矩阵中有“许多”元素为0,则称该矩阵为稀疏矩阵(sparse)。不是稀疏的矩阵被称为稠密矩阵(dense)。在稀疏矩阵和稠密矩阵之间并没有一个精确的界限。,例4-5某超级市场正在开展一项关于顾客购物品种的研究。为了完成这项研究,收集了1000个顾客的购物数据,这些数据被组织成一个矩阵purchases,其中purchases(i,j)表示顾客j所购买的商品i的数量。假定该超级市场有10000种不同的商品,那么purchases将是一个100001000的矩阵。如果每个顾客平均购买了20种不同商品,那么在10000000个矩阵元素将大约只 有20000个元素为非0,并且非0元素的分布没有很明确的规律。,把稀疏矩阵的非0元素映射到数组中时必须提供三个域:r o w(矩阵元素所在行号)、 c o l(矩阵元素所在列号)和 v a l u e(矩阵元素的值),矩阵转置,两个矩阵相加,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报