2.地址计算 由于多维数组在内存中排列成一个线性序列,因此,若知道第 个元素的内存地址,如何求得其他元素的内存地址?我们可 以将它们的地址排列看成是一个等差数列,假设每个元素占个 字节,元素a;的存储地址应为第一个元素的地址加上排在a;前 面的元素所占用的单元数,而an的前面有行(0-1)共i×n个元 素,而本行前面又有个元素,故a的前面一共有ixn+个元素, 设a的内存地址为LOc(a),则a的内存地址按等差数列计算 为LOc(a)=LOC(a)+ixnj)×1。同理,三维数组 Amxnx按 行优先存放的地址计算公式为 Loc(an)=LOC(a000(×n×p×p+k)×1
2.地址计算 由于多维数组在内存中排列成一个线性序列,因此,若知道第 一个元素的内存地址,如何求得其他元素的内存地址?我们可 以将它们的地址排列看成是一个等差数列,假设每个元素占l个 字节,元素aij 的存储地址应为第一个元素的地址加上排在aij 前 面的元素所占用的单元数,而aij 的前面有i行(0~i-1)共i×n个元 素,而本行前面又有j个元素,故aij的前面一共有i×n+j个元素, 设a00的内存地址为LOC(a00),则aij的内存地址按等差数列计算 为LOC(aij)=LOC(a00)+(i×n+j)×l。同理,三维数组Am×n×p按 行优先存放的地址计算公式为: LOC(aijk)=LOC(a000)+(i×n×p+j×p+k)×l
522列优先顺序 1.存放规则 列优先顺序也称为高下标优先或右边下标优先于左边下标。具体实现时, 按列号从小到大的顺序,先将第一列中元素全部存放好,再存放第二列元 素,第三列元素,依次类推 在 FORTRAN语言程序设计中,数组是按列优先顺序存放的。例如,对前 面提到的Axn二维数组,可以按如下的形式存放到内存:a0,a10 a ar m-1n-1° 即二维数 组按列优先存放到内存后,也变成了一个线性序列(线性表) 因此,可以得出多维数组按列优先存放到内存的规律:最右边下标变化最 慢,最左边下标变化最快,左边下标变化一遍,与之相邻的右边下标才变 化一次。因此,在算法中,最右边下标可以看成是外循环,最左边下标可 以看成是最内循环。 2.地址计算 同样与行优先存放类似,若知道第一个元素的内存地址,则同样可以求得 按列优存放的某一元素a的地址。 对二维数组有:LOC(an)=LOC(ao0+×m+)× 对三维数组有:LOC(an)=LOC(a0+(k×mxn+j×m+
5.2.2 列优先顺序 1.存放规则 列优先顺序也称为高下标优先或右边下标优先于左边下标。具体实现时, 按列号从小到大的顺序,先将第一列中元素全部存放好,再存放第二列元 素,第三列元素,依次类推…… 在FORTRAN语言程序设计中,数组是按列优先顺序存放的。例如,对前 面提到的Am×n二维数组,可以按如下的形式存放到内存:a00, a10…, am-10, a01,a11, …, am-1 1,…, a0 m-1,a1m-1,..., am-1 n-1。 即二维数 组按列优先存放到内存后,也变成了一个线性序列(线性表)。 因此,可以得出多维数组按列优先存放到内存的规律:最右边下标变化最 慢,最左边下标变化最快,左边下标变化一遍,与之相邻的右边下标才变 化一次。因此,在算法中,最右边下标可以看成是外循环,最左边下标可 以看成是最内循环。 2.地址计算 同样与行优先存放类似,若知道第一个元素的内存地址,则同样可以求得 按列优存放的某一元素aij的地址。 对二维数组有:LOC(aij)=LOC(a00)+(j×m+i)×l 对三维数组有: LOC(aijk)=LOC(a000)+(k×m×n+j×m+i)×l
5.3特殊矩阵及其压缩存储 矩阵是一个二维数组,它是很多科学与工程计算问题中研究的数学对 象。矩阵可以用行优先或列优先方法顺序存放到内存中,但是,当矩 阵的阶数很大时将会占较多存储单元。而当里面的元素分布呈现某种 规律时,这时,从节约存储单元出发,可考虑若干元素共用一个存储 单元,即进行压缩存储。所谓压缩存储是指:为多个值相同的元素只 分配一个存储空间,值为零的元素不分配空间。但是压缩存储时,节 约了存储单元,但怎样在压缩后找到某元素呢?因此还必须给出压缩 前的下标和压缩后下标之间变换公式,才能使压缩存储变得有意义
5.3 特殊矩阵及其压缩存储 矩阵是一个二维数组,它是很多科学与工程计算问题中研究的数学对 象。矩阵可以用行优先或列优先方法顺序存放到内存中,但是,当矩 阵的阶数很大时将会占较多存储单元。而当里面的元素分布呈现某种 规律时,这时,从节约存储单元出发,可考虑若干元素共用一个存储 单元,即进行压缩存储。所谓压缩存储是指:为多个值相同的元素只 分配一个存储空间,值为零的元素不分配空间。但是压缩存储时,节 约了存储单元,但怎样在压缩后找到某元素呢?因此还必须给出压缩 前的下标和压缩后下标之间变换公式,才能使压缩存储变得有意义
5.31特殊矩阵 对称矩阵 若一个n阶方阵A中元素满足下列条件: an=a1其中0≤,jsn-1.,则称A为对称矩阵。 例如,图5-1是一个3*3的对称矩阵。 2.三角矩阵 (1)上三角矩阵 即矩阵上三角部分元素是随机的,而下三角部分元素全部相同(为某常数C)或 全为0,具体形式见图52(a)。 图5-1一个对称矩阵
1.对称矩阵 若一个n阶方阵A中元素满足下列条件: aij=aji 其中 0 ≤i, j≤n-1 ,则称A为对称矩阵。 例如,图5-1是一个3*3的对称矩阵。 5.3.1 特殊矩阵 2.三角矩阵 (1)上三角矩阵 即矩阵上三角部分元素是随机的,而下三角部分元素全部相同(为某常数C)或 全为0,具体形式见图5-2(a)。 图5-1 一个对称矩阵 A= 3 4 6 2 5 4 1 2 3
(2)下三角矩阵 即矩阵的下三角部分元素是随机的,而上三角部分元素全部相同(为某常数C) 或全为0,具体形式见图5-2(b)。 (a)上三角矩阵 (b)下三角矩阵 c an-In-I 图5-2三角矩阵
(2)下三角矩阵 即矩阵的下三角部分元素是随机的,而上三角部分元素全部相同(为某常数C) 或全为0,具体形式见图5-2(b)。 (a)上三角矩阵 (b)下三角矩阵 图5-2 三角矩阵 1 0 1 1 1 1 1 0 1 1 0 0 ... ... ... ... ... ... ... n− n− n− n− a a a a a c a c c 1 1 1 1 1 1 0 0 0 1 0 1 ... ... ... ... ... ... − − − − n n n n c c c a c a a a a a