学《数据结构》越学越聪明--第六章》》》数组与广义表一、数组

数组

数组的概念

逻辑结构上看,一维数组A是n(n>1)个相同类型数据元素a1、a2、......、An构成的有限序列,其逻辑表示为:

A=(a1、a2、....、An)

其中,a1(1≤i≤n)表示数组A的第i个元素。

在这里插入图片描述

一个m行m列的二维数组A可以看作是每个数据元素都是相同类型的一维数组的一维数组。

由此看出,多维数组是线性表的推广

在这里插入图片描述

数组的抽象数据类型+运算描述

数组的基本运算如下:
  • Value(A,index1,index2,.....,indexD)即A(index,index2,...,indexD)=e,元素赋值

  • Assign(A,e,inex1,index2,....,indexD):取元素值。

  • ADisp(A,b1,b2,.....,bD):输出d维数组A的所有元素值

在这里插入图片描述

数组的存储结构

将数组的所有元素存储在一块地址连续的内存单元中,这是一种顺序存储结构

几乎所有的计算机语言都支持数组类型,以C/C++语言为例,其中数组数据类型具有以下性质:
  • 数组中的数据元素数目固定
  • 数组中所有数据元素具有相同的数据类型

  • 数组中每个数据元素都有唯一的下标

  • 数组是一种随机存储结构。可随机存取数组中的任意数据元素

在这里插入图片描述
一维数组:一旦a1的存储地址LOC(a1)确定,并假设每个数据元素占用K个存储单元,则任一数据元素aI的存储地址LOC(ai)就可以下公式求出:
LOC(ai)=LOC(a1)+(i-1)*k (0=<i=<n)

在这里插入图片描述

存储方式

  • 以行序为主的存储
  • 以列序为主的存储

在这里插入图片描述

以行为主序的存储

在这里插入图片描述
LOC(Ai,j)=LOC(Ai,j)+[(i-1)*n+(j-1)]*k
在这里插入图片描述

以列序为主的存储

LOC(Ai,j)=LOC(Ai,j)+[(j-1)*m+(i-1)]*k 其中m为行数。

在这里插入图片描述

特殊矩阵压缩存储

特殊矩阵的主要形式有:
  • 对称矩阵

  • 上三角矩阵/下三角矩阵

  • 对角矩阵

它们都是方阵,即行数和列数相同

在这里插入图片描述

对称矩阵压缩存储

若一个n阶方阵A【n】[n]中的元素满足Ai,j=Aj,i(0<=i,j<=n-i),则称其为n阶对称矩阵

  • 上三角:Ai,j(i小于j,行小于列)

  • 下三角:Ai,j(i大于j,行小于列)

  • 对角线:Ai,j(i等于j,行等于列,i大于等于0,小于等于n减一)

在这里插入图片描述

以行序为主序存储其下三角+主对角线的元素

在这里插入图片描述
元素个数为:
A0,0、A1,0、A1,1…、An-1,0,An-1,1…An-1,n-1;
在这里插入图片描述
在这里插入图片描述
对于对称矩阵A,采用一维数组B存储,并提供A的所有运算。

三角矩阵的压缩存储

上三角矩阵:

在这里插入图片描述

下三角矩阵

在这里插入图片描述

在这里插入图片描述

对角矩阵的压缩存储

在这里插入图片描述
在这里插入图片描述

特殊矩阵为什么要采用压缩存储,需要注意什么问题

采用压缩存储只需要在算法中按公式做映射即可实现特殊矩阵元素的随机存取。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷军的小宝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值