第四章数组和稀疏矩阵

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Loc(a[i])=Loc(a[0])+i*L( i=0,1,2,…,n-1)
19
4.1 数组
二维数组元素的地址
对于二维数组a[m][n],我们可以理解为a是一维数组,它有 m个元素,行0,行1,…,行m-1,而每一行又由n个元素组成。 若α是数组a的基地址,也就是其元素a[0][0]的地址。则第1 行的第1个元素的地址为α+1n,第2行的第1个元素的地址为α +2n。因为在第i行的第一个元素之前,有i行,每行有n个元 素,所以第i行的第一个元素a[i][0]的地址是α+i n,那么a[i][j] 的地址就是α+i n+j。 因此二维数组中元素a[i][j]的地址为: α+ i n + j
基本算法
设计训练 (13-16周)
编程训练
(6-9周)
设计训练
(3-5周)
新疆大学精品课程——数据结构
第一章 绪论 第三章 栈和队列
第二章 线性表
第四章 矩阵
10
新疆大学精品课程——数据结构
1
理解数组中元素在内存中的表示
2
理解数组元素寻址公式含义
第四章 教学 目标
3
掌握特殊矩阵压缩存储方法 掌握稀疏矩阵压缩存储方法及其 转置和相乘运算的实现
20
4.1 数组
二维数组元素的地址
如果基地址用Loc(a[0][0])表示,每个元素占k个存储单元, 则行优先顺序有
loc(a[i][j])=loc(a[0][0])+(i*n+j)*k (0i<m; 0j<n) 则列优先顺序有: loc(a[i][j])=loc(a[0][0])+(j*m+i)*k
a00 a01 a10 a11 a12 a21 a22 a23 …… an-1,0 …… an-1,n-1
k 0 1 2 3 4
a10 a11 a12 0 …………… 0
a21 a22 a23 0 ……… 0
……………………………
0 0 0 … an-2,n-3 an-2,n-2 0… … an-1,n-2 an-2,n-1 an-1n-1
检索
新疆大学精品课程——数据结构教学安排
第八章 排序
第七章 检索 第五章 树和二叉树 8学时 6学时
6学时
第六章 图
10学时
第四章 矩阵 第三章 栈和队列 4学时
4学时
第一章 绪论
4学时
第二章 线性表
6学时
新疆大学精品课程——数据结构实验安排
C程序
矩阵存储 排序检索 图的基本 算法程序 设计训练 (10-12周) 二叉树 线性结 构程序 基本编 程训练 (1-2周)
n(n+1)/2-1 n(n+1)/2
29
4.2 稀疏矩阵
三对角矩阵
如果矩阵中的所有的非零元素都集中在以主对角线为中心
的带状区域则称为对角矩阵,即除了主对角线和主对角线相邻 两侧的若干条对角线上的元素之外,其余元素皆为零。如常见 的三对角矩阵。
30
4.2 稀疏矩阵
三对角矩阵 a00 a01 0 0 …………… 0
2
新疆大学精品课程——数据结构教学目标
提 高 问 题 分 析 能 力 提 高 程 序 调 试 能 力 提 高 程 序 书 写 能 力
训 练 编 程 能 力
3 3
新疆大学精品课程——数据结构参考书
新疆大学精品课程——数据结构学习方法
经典算法将会 成为你今后程 序设计的基石! 正确理解基本概念 是学习知识的基础
21
4.1 数组
三维数组元素的地址
对于三维数组a[m][n][ p],可以看成m个大小为np的二 维数组,由a[i][0][0]的地址及二维数组的寻址公式,可求得到 三维数组元素a[i][j][k]寻址公式为: α + i n p + j p + k
22
4.1 数组
数组的特点 对同一数组的任何一个元素,由下标求存储地址的 运算时间是一样的,也就是说对任何一个数组元素的 访问过程是平等的,这是随机存取结构一个优点。 为了在内存中给数组开辟足够的存储单元,数组的 维数和大小必须事先给出。
a00 a10 a11 …
,,,,,
k 0 1 2 3 4
……
an-1,0 …… an-1,n-1
n(n+1)/2-1
27
4.2 稀疏矩阵
三角矩阵
以主对角线划分,三角矩阵有上三角和下三角两种。
上三角矩阵是它的下三角(不包括主对角线)中的元素均为 常数或零。下三角矩阵正好相反,它的主对角线上方均为常数 或零。三角矩阵中的重复元素c可共享一个存储空间,其余的元 素正好有n(n+1)/2个,因此,三角矩阵可压缩存储到一维数组sa [n(n+1)/2+1]中。其中c存放在向量的最后一个分量中。
3n-3
31
4.2 稀疏矩阵
稀疏矩阵
设矩阵A[m][n]中有s个非零元素,若s远远小于矩阵元素的
总数(即s<<m×n),则称A为稀疏矩阵。
稀疏矩阵的三元组表表示
在存储稀疏矩阵时,为了节省存储单元,很自然地想到 使用压缩存储方法。但由于非零元素的分布一般是没有规律
的,因此在存储非零元素的同时,还必须同时记下它所在的
注重经典 算法学习
理解基 本概念
加强程序 设计训练
新疆大学精品课程——数据结构教学内容
第一章 绪论 第三章 栈和队列
第二章 线性表 第四章 矩阵
6 6
新疆大学精品课程——数据结构教学重点
算法分 析思想 线性 结构 数据结构 教学重点 树与 二叉树 图 排序
理解数据、逻辑结构、存 理解检索、检索表、平 理解线性结构特点 掌握图的基本概念 理解树与二叉树的概念 理解排序、排序稳定性 储结构等概念 均检索长度等概念 等概念
0
0 0 2 0
3
0 0 0 0
0
0 0 0 0
0
0 0 0 0 33
4.2 稀疏矩阵
稀疏矩阵举例
0 0 1 2 3 4 5 0 0 0 9 1 0 6 0 0 0 2 0 9 0 0 0 3 2 0 3 0 0 4 0 0 0 0 0 5 8 0 0 0 0
5 6
0 0
0 0
2 0
0 0
0 0
0 0
性序列为:
a00,a10,…,am-1,0,a01,a11,…am-1,1,……,am-1,1, …,an-1,m-1
16
4.1 数组
行优先顺序
一个m行n列的二维数组如下所示: a00 a10 … a01 a11 … … … … a0,n-1 a1,n-1 … am-1,n-1
a00
a01
…… a0,n-1 a10 a11 …… a1,n-1
a00 a01
… ….. a0n-1
a10 a11 …. ……. a1n-1
………………….
an-10 an2 …
5
7
6
9
3
8
8
4
an-1n-1
26
4.2 稀疏矩阵
对称矩阵
为节约存储空间,只存对角线及对角线以 上的元素,或者只存对角线及对角线以下的 元素。不失一般性,假设以行主序存储下三 角(包括对角线)中的元素。 以一维数组sa[n(n+1)/2]作为n阶对称矩 阵A的存储结构,则sa[k]和矩阵元aij之间 存在着一一对应的关系: i(i+1)/2+j 当i≧j j(j+1)/2+i 当i<j
11
4
第四章 数组与稀疏矩阵
4.1 数组
4.2 稀疏矩阵
12
第四章 数组与稀疏矩阵
4.1 数组
4.2 稀疏矩阵
13
4.1 数组
什么是数组? 数组是下标index 和值value 组成的偶序对的集合。 (index,value)
一维数组: A = {(0,15),(1,24),(2,33),(3,21)}
行和列的位置(i,j)。一个三元组(i,j,aij)唯一确定了矩阵A 的一个非零元素。因此,稀疏矩阵可由表示非零元素的三元 组及其行列数唯一确定。
32
4.2 稀疏矩阵
稀疏矩阵举例
0 0 1 5 0 1 0 6 2 0 9 3 2 0 4 0 0 5 8 0
2
3 4 5 6
0
0 9 0 0
0
0 0 0 0
23
第四章 数组与稀疏矩阵
4.1 数组
4.2 稀疏矩阵
24
4.2 稀疏矩阵
问题引入
在科学与工程计算问题中,矩阵是一种常用的数学对象,
在高级语言编制Hale Waihona Puke Baidu序时,就是将一个矩阵描述为一个二维数组。
矩阵在这种存储表示之下,可以对其元素进行随机存取,各种 矩阵运算也非常简单。但是在矩阵中非零元素呈某种规律分布 或者矩阵中出现大量的零元素的情况下,实际上占用了许多单 元去存储重复的非零元素或零元素,这对高阶矩阵会造成极大
am-1,0 am-1,1 …
……
a0,n-1 a1,n-1 …… am-1,n-1 18
4.1 数组
一维数组元素的地址
知道数组的维数,数组每个元素的地址我们很容易通过数 组的基地址得到。 对于一维数组a[n],假定每个元素占一个存储单元,α是 数组的基地址。则元素a[0]的地址是α,那么元素a[1]的地址就 是α+1,元素a[2]的地址应该是α+2。 那么任一元素a[i]在内存中的地址是 α+i 如果基地址用Loc(a[0])表示,每个元素占L个存储单元, 则有
的浪费,为了节省存储空间,我们可以对这类矩阵进行压缩存
储:即为多个相同的非零元素只分配一个存储空间;对零元素 不分配空间。
25
4.2 稀疏矩阵
对称矩阵
若n阶矩阵A中的数据元素满足下述性质aij=aji (0≤i,j≤n-
1)则称A为n阶对称矩阵;因aij与aji相等,二者只需分配一个
存储单元。这样,可将n×n个存储单元压缩到n(n+1)/2个单 元。 1 3 3 2 5 6 7 9




am-1,n-1
15
am-1,0 am-1,1 …
4.1 数组
基本概念
通常有两种顺序存储方式:
1. 行优先顺序——将数组元素按行排列,第i+1个行向量紧
接在第i个行向量后面。以二维数组为例,其存储线性序列为: a00,a01,…,a0,n-1,a10,a11,…,a1,n-1,……,am-1,0, …,am-1,n-1 2. 列优先顺序——将数组元素按列向量排列,第j+1个列向 量紧接在第j个列向量之后,二维数组按列优先顺序存储的线
am-1,0 am-1,1 …
……
am-1,0 am-1,1
……
am-1,n-1 17
4.1 数组
列优先顺序
一个m行n列的二维数组如下所示: a00 a10 … a01 a11 … … … … a0,n-1 a1,n-1 … am-1,n-1
a00
a10
…… am-1,0 a01
a11
…… am-1,1
28
4.2 稀疏矩阵
三角矩阵
k
a00 c
c …….. ….
c c c
a10 a11 c ……..
a00 a10 a11 … …… an-1,0
0 1 2 3
an-10 an-11 an-13 … an-1n-1
k=
i(i+1)/2+j n(n+1)/2
当 i≧ j 当i<j
……
an-1,n-1 c
14
4.1 数组
基本概念
数组是我们最熟悉的数据类型,在早期的高级语言中,数
组是唯一可供使用的数据类型。由于数组中各元素具有统一的 在内存中,数组元素是连续存储的。数组的第一个
类型,并且数组元素的下标一般具有固定的上界和下界,因此 元素的地址称为基地址,也称为数组的起始地址。 ,数组的处理比其它复杂的结构更为简单。 a00 Am×n= a10 a01 a11 … … a0,n-1 a1,n-1
2 3 4 5 6 0 0 9 0 0 0 0 0 0 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 0 3 5 2 8
34
4.2 稀疏矩阵
稀疏矩阵的三元组表
稀疏矩阵 M就可存储在三元组表 a[t+1][3]中。其中t=8是 0 1 2 3 4 5
行 列 值
稀疏矩阵中非零元素的个数,三元组表中 0 7a[0][0]、 6a[0][1]和 8 0 5 0 0 2 0 8 1 0 0 5 a[0][2] 1 0 分别表示稀疏矩阵的行数、列数和非零元素个数。 6 9 0 0 0
新疆大学精品课程
新疆大学信息科学与工程学院
新疆大学精品课程 ——数据结构教材 新疆大学精品课程
主 副 主 数据结构 编 张振宇 编 刘淑娴 崔青
出版时间 2009年9月
适用对象 本科学生 使用范围 全国发行 主讲教师:张振宇 刘淑娴 崔青 教材特色 深入浅出 课件制作:刘淑娴 崔青 张振宇 郑炅 刘金莲 通俗易懂
熟悉图的应用算法,特别 重点掌握二叉树的遍历、 重点掌握栈、队列的实 掌握算法概念及算法设 重点掌握各类排序方法 重点掌握各类检索方法 是最短路径、最小生成树、 哈夫曼树的应用 现及与程序设计的关系 计的基本要求 关键路径等在后续课程中 应用检索方法解决问题 应用检索方法解决问题 的应用 重点介绍算法分析方法
相关文档
最新文档