【数据结构与算法分析】数组
来源:互联网 发布:exel宏编程运用 编辑:程序博客网 时间:2024/05/29 08:57
一、基本定义
定义:一维数组(array)是有限个具有相同类型的变量组成的序列。若其中每个变量本身是一维数组,则构成二维数组。类似的,若每个变量本身为(n-1)维数组,则构成n维数组。
标识:在一维数组中,每个元素对应一个下标以标识该元素。类似的,在n维数组中,每个元素对应n个方向的下标以标识该元素。
特点:由于一维数组的线性关系,因此,一维数组中的每个元素最多有一个直接前驱和一个直接后继。类似的,在n维数组中,每个元素最多有n个直接前驱和n个直接后继。
运算:①给定一组下标,存取相应的数组元素。
②给定一组下标,修改相应的元素值。
由于这两个运算在内部实现时都需要计算出给定元素的实际存储地址,因此,计算数组元素地址这一运算就成了数组中最基本的运算。
二、存储结构
(1)顺序存储
1)以行序为主序的存储(行优先次序):逐行的存储各元素。序号:Num(i,j)=(i-1)*n+j
2)以列序为主序的存储(列优先次序):逐列的存储各元素。序号:Num(i,j)=(j-1)*m+i
地址:若给定存储区的起始地址为Addr0,每个元素占c个字节,则元素A[i,j]在内存中的地址为Loc(i,j)=Addr0+(Num(i,j)-1)*c
说明:此处所给出的数组的行列下标是按序号从1开始的
(2)压缩存储
1)特殊的压缩存储
①对称矩阵和三角矩阵
若矩阵An×n满足aji=aij(1≤i,j≤n),则称A为对称矩阵。序号:Num(i,j)=1+2+3+……(i-1)+j=i(i-1)/2+j(i≥j)
所谓三角矩阵是指对角线上或以下的元素全为0,或全为同一值。序号:Num(i,j)=1+2+3+……(i-1)+j=i(i-1)/2+j(i≥j)(下三角矩阵)
②对角矩阵
所谓对角矩阵,是指除了主对角线和紧靠主对角线的上下若干条对角线外,其余元素全为0。序号:Num(i,j)=[3(i-1)-1]+[j-i+2]=2i+j-2(|i-j|≤1)
2)稀疏矩阵的压缩存储
在对稀疏矩阵进行压缩存储时,除了要存储非零元素的值v之外,还要存储其行列号i和j,故每个非零元素需要一个三元组(i,j,v)来描述。
如果将这些三元组集合以线性表的形式组织起来,则可构成三元组表。
- 【数据结构与算法分析】数组
- 算法与数据结构 - 数组
- 数据结构与算法:数组
- (c#)数据结构与算法分析 --数组、向量和表
- [数据结构与算法分析] 栈的数组实现
- 数据结构与算法分析_数组的子序列问题
- 数据结构算法与分析
- 数据结构与算法分析
- 数据结构与算法分析
- 数据结构与算法分析
- 数据结构与算法分析
- 数据结构与算法分析
- 数据结构与算法分析
- 数据结构与算法分析
- 《数据结构与算法分析》
- 《算法学习与数据结构》part3 算法分析与数据结构之数组和广义表
- 数据结构与算法分析笔记与总结(java实现)--数组1:二维数组中的查找
- 数据结构与算法分析笔记与总结(java实现)--数组2:旋转数组的最小数字
- PHP中获取当前页面的完整URL
- java模拟getpost请求
- jquary学习之路--2
- Html初学之路01
- c语言中的位操作
- 【数据结构与算法分析】数组
- HttpHandler与HttpModule的用处与区别
- Redis与Memcache区别
- hibernate生成表中有BLOB字段的javabean,hql查询出现无效列类型异常
- hive 创建表详解
- php如何在某个时间上加一天?一小时?一星期?一个月?
- Winsoft Optical Character Recognition for FireMonkey 破解日志
- 蓝牙通信
- 软件开发中团队首领的好坏之分