- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构_04_数组与串解析
第四章 数组、串与广义表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件 本章主要内容 多维数组的概念与存储 特殊矩阵 稀疏矩阵 字符串 * 多维数组的概念与存储 多维数组是一维数组的扩展 * 二维数组 三维数组 多维数组的概念与存储 多维数组存储在连续的空间中 存储地址计算方法(假设数组首地址为a ,元素大小为 l) 一维数组:a[m1] 二维数组:a[m1][m2] 三维数组:a[m1][m2] [m3] n维数组: a[m1][m2] …[mn] * Loc(i)= a + i*l Loc(i, j)= a + ( i*m2 + j )*l Loc(i, j, k)= a + ( i*m2*m3 + j*m3 + k )*l 特殊矩阵 二维数组也称为矩阵 特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。 对称矩阵 三对角矩阵 利用特殊矩阵的性质,节省存储空间 * 对称矩阵 三对角矩阵 特殊矩阵 对称矩阵的压缩存储 设有一个 n?n 的矩阵 A。如果在在矩阵中,aij = aji,则此矩阵是对称矩阵。 只保存对称矩阵的对角线和对角线以上 (或以下) 的元素,则称此为对称矩阵的压缩存储 压缩存储方式:用一维数组存储 * 特殊矩阵 对称矩阵的压缩存储 下三角阵存储: 用一维数组B存储对称矩阵A中对角线及对角线以下的元素 矩阵A中元素a[i][j]对应一维数组B中的下标为 * (i+1)*i/2 + j, i ≥ j Loc(i, j) = (j+1)*j/2 + i, i j a00 a10 a11 a20 a21 a22 a30 a31 a32 …… an-1n-1 0 1 2 3 4 5 6 7 8 n(n+1)/2-1 B 特殊矩阵 对称矩阵的压缩存储 上三角阵存储: 用一维数组B存储对称矩阵A中对角线及对角线以上的元素 矩阵A中元素a[i][j]对应一维数组B中的下标为 * (2n - i + 1)*i/2 + j-i, i ≤ j (2n - j - 1)*j/2 + i, i j Loc(i, j) = a00 a01 a02 … a0n-1 a11 a12 … a1n-1 a22 … an-1n-1 0 1 2 n-1 n n+1 2n-2 2n-1 n(n+1)/2-1 B 稀疏矩阵 设矩阵 A 中有 s 个非零元素,若 s 远远小于矩阵元素的总数(即s m×n),则称 A 为稀疏矩阵。 稀疏因子: δ = s/(m×n) 一般δ ≤ 0.05可称为稀疏 * 稀疏矩阵表示 稀疏矩阵 用三元组(i, j, aij)表示稀疏矩阵一个元素aij * 三元组表示 稀疏矩阵表示 稀疏矩阵 三元组表示的稀疏矩阵转置的直观方法 按列从小到大排序 行列交换 * 稀疏矩阵 三元组表示的稀疏矩阵转置的扫描方法 假设A有Cols列,则扫描Cols趟 第k趟扫描在表中找列号为k的三元组,取出,交换行列号 * 扫描列号为0的三元组 扫描列号为1的三元组 扫描列号为2的三元组 扫描列号为3的三元组 扫描列号为4的三元组 扫描列号为5的三元组 扫描列号为6的三元组 6 5 -52 5 3 -17 4 4 19 3 5 -8 3 2 -6 3 1 -11 2 0 2 1 4 9 0 1 3 稀疏矩阵 三元组表示的稀疏矩阵转置的快速方法 统计各列非零数rowSize(扫描三元组表) 计算各列在转置三元组中的索引位置rowStart 扫描三元组表,放入相应索引位置,相应索引加1 rowSize 1 1 1 3 1 1 1 rowStart 0 1 2 3 6 7 8 6 5 -52 5 3 -17 4 4 19 3 5 -8 3 2 -6 3 1 -11 2 0 2 1 4
文档评论(0)