一维数组的地址计算

设每个元素的大小是 \(size\),首元素的地址是 \(a[1]\) ,则

a[i] = a[1] + (i-1)*size

若首元素的地址是 \(a[0]\)

a[i] = a[0] + i*size

二维数组的地址计算 (\(m * n\)的矩阵)

行优先

设每个元素的大小是 \(size\) ,首元素的地址是 \(a[1][1]\) ,则 \(a[i][j]\) ?

分析:\(a[i][j]\) 位于第 \(i\) 行,第 \(j\) 列。它之前有 \(i-1\) 行,在第 \(i\) 行它之前有 \(j-1\) 个元素。

即 \(a[i][j] = a[1][1] + [n*(i-1) + (j-1)]*size\)

三维数组的地址计算 (\(r*m*n\)) \(r\) 行 \(m\) 列 \(n\) 纵

行优先

首元素的地址 \(a[1,1,1]\)

\(a[i,j,k] = a[1,1,1] + [(i-1)*n*m + (j-1)*n + (k-1)]*size\)

压缩存储:指为多个值相同的元素只分配一个存储空间,对零元素不分配存储空间,其目的是为了节省存储空间。

二维数组通常用来存储矩阵,特殊矩阵分为两类

(1)元素分布没有规律的矩阵,按照规律对用的公式实现压缩。

(2)无规律,但非零元素很少的稀疏矩阵,只存储非零元素实现压缩。

一、三角矩阵

包括上三角矩阵,下三角矩阵和对称矩阵

(1)若 \(i<j\) 时,\(a[i,j]=0\) ,则称此矩阵为下三角矩阵。

(2)若 \(i>j\) 时,\(a[i,j]=0\),则称此矩阵为上三角矩阵。

(3)若矩阵中的所有元素满足 \(a[i,j]=a[j,i]\) ,则称此矩阵为对称矩阵。

二、三对角矩阵

带状矩阵的压缩方法:将非零元素按照行优先存入一维数组。

(1)确定一维数组的存储空间大小:\(2+(n-2)*3+2 = 3n-2\)

(2)确定非零元素在一维数组中的地址

$loc(i,j) = loc(1,1) + $ 前 \(i-1\) 行非零元素个数 \(+\) 第 \(i\) 行中 \(a[i,j]\) 前非零元素的个数

前 \(i-1\) 行:\(3 * (i-1) - 1\),因为第一行只有两个,所以要减去 \(1\)

第 \(i\) 行中 \(a[i,j]\) 前非零元素的个数 \(=(j-i)+1,\)

\(j-i\) 有三种情况:

(1)\(j<i ,j-i=-1\)

(2)\(j==i\) **\(,j-i=0\) **

(3)\(j>i ,j-i=1\)

\[loc(i,j) \\= loc(1,1) + 3(i-1)-1 + j-i+1 \\= loc(1,1) + 2(i-1) + j-1 \\= loc(1,1) + 2i+j-3
\]

DS | 一维数组 & 二维数组 & 对称矩阵 & 三角矩阵 & 三对角矩阵地址的计算的更多相关文章

  1. Java基本语法-----java数组(一维数组二维数组)

    嘿嘿!你们懂的,又是图片,委屈大家了. java数组(一维数组二维数组) [正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个"顶"字,你就 ...

  2. Java一维与二维数组的拷贝与排序

    Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...

  3. 数据结构 二维数组-->稀疏数组-->二维数组

    稀疏数组基本概念: 稀疏数组应用场景: 当一个数组大部分的元素为"0",或者为同一个值的数组时,可以使用稀疏数组来保存该数组 处理方法: 1>记录数组一共有几行几列,有多少不 ...

  4. php获取一维,二维数组长度的方法(有实例)

    在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...

  5. Java 一维数组 二维数组 三维数组

    二维数组包含一位数组  三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推.   下面是 一维 二维 三维数组例子   一维数组: int[] array1 ...

  6. 10-20C#基础---一维、二维数组&&冒泡排序

    一.一维数组 1.定义:是某一种数据类型的数据的组合,数组用来分组基本类型或相同类型的对象.数组中的实体叫做数组的元素或成员. 2. 格式:int[ ] shuzu=new int[ 6];存放int ...

  7. Java一维数组二维数组详解API

    所谓数组,是有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标 ...

  8. egret之一维,二维数组

    一维数组转换成二维数组下标公式: 行=下标/二维数组列数 列=下标%二维数组列数+1 ] + ); ] + ); 二维数组转一维数组: 下标=(二维数当前行-1)*列数+二维数当前列-1: let i ...

  9. 一维、二维数组 与 常用的返回数组 以及 fetch_all与fetch_row的区别

    一维数组:单行单列的数组. 二维数组:多行多列的数组.       (至少两行两列) 索引数组: fetch_all() 返回所有数组 fetch_row() 返回一行或一列数组  (第二行需要输入两 ...

  10. 《Java基础知识》一维,二维数组的申明和使用

    为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理. --------   数组也是一个变量,是存储一组相同类型的变量 声明一个变量就是在内存中划出一块合适的空间 声明一个数 ...

随机推荐

  1. 【VMware vCenter】管理平台出现备份作业状态告警,VAMI后台备份任务未能运行,点击手动备份提示FTP位置不可用等问题的处理过程。

    VMware vCenter提供了一个备份/还原功能,以便在当vCenter本身出现故障且无法恢复的情况下,使用该功能可以将出故障的vCenter配置文件还原到一个新的vCenter上,这样就无需再重 ...

  2. Bash—source命令&export命令&bashrc文件

    当不使用 source 命令执行脚本时,会创建一个子 shell,在该子 shell 中执行完脚本后退出子 shell.不是用 export 定义的变量只对该 shell 有效,对子 shell 是无 ...

  3. [CF568E] Longest Increasing Subsequence

    题目描述 Note that the memory limit in this problem is less than usual. Let's consider an array consisti ...

  4. Mybatis-Flex核心功能之@Column

    1.是什么? MyBatis-Flex 提供了 @Column 用来对字段进行更多的配置 public @interface Column { /** * 字段名称 */ String value() ...

  5. Scrapy框架架构

    ENGINE:引擎,负责各个组件的管理. SPIDERS:各个爬虫文件类.(我们一般要写的代码就是这个). SCHEDULER:调度器,ENGINE将爬虫任务分发给该组件,由该组件调度爬虫任务. DO ...

  6. AES算法在网络安全中的应用:如何守护数据宝藏?

    摘要:高级加密标准(AES)是美国国家标准与技术研究所(NIST)用于加密电子数据的规范.本文从历史.算法原理.性能优势和应用等方面全面介绍了AES算法,旨在帮助读者更好地理解这一广泛应用的对称加密算 ...

  7. 2024-01-06:用go语言,在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧 在桥上有一些石子,青蛙很讨厌踩在这些石子上 由于桥的长度和青蛙一次跳过的距离都是正整数 我们可以把独木桥

    2024-01-06:用go语言,在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧 在桥上有一些石子,青蛙很讨厌踩在这些石子上 由于桥的长度和青蛙一次跳过的距离都是正整数 我们可以把独木桥 ...

  8. 升级高版本springboot2.6.x:org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata

    升级springboot高版本2.6.x 项目使用到了springcloud的oauth2依赖,直接升级springboot项目版本为最新 2.6.8(2022年6月16日)将会报以下错误: org/ ...

  9. 根据图片URL地址下载图片

    /// <summary> /// 下载图片 /// </summary> /// <param name="picUrl">图片Http地址& ...

  10. Programming Abstractions in C阅读笔记:p196

    <Programming Abstractions in C>学习第63天,p196总结.涉及到编程之外的知识,依然是读起来很费劲,需要了解作者在书中提到的人物(Edouard Lucas ...