数据结构 || 二维数组按行存储和按列存储[通俗易懂]

数据结构 || 二维数组按行存储和按列存储[通俗易懂]问题描述:设有数组A[n,m],数组的每个元素长度为3字节,n的值为1~8,m的值为1~10,数组从内存收地址BA开始顺序存放,请分别用列存储方式和行存储方式求A[5,8]的存储首地址为多少。解题说明:(1)为什么要引入以列序为主序和以行序为主序的存储方式?因为一般情况下存储单元是单一的存储结构,而数组可能是多维的结构,则用一维数组存储数组的数据元素就存…

大家好,又见面了,我是你们的朋友全栈君。

问题描述

    设有数组A[n,m],数组的每个元素长度为3字节,n的值为1~8,m的值为1~10,数组从内存收地址BA开始顺序存放,请分别用列存储方式和行存储方式求A[5,8]的存储首地址为多少。

解题说明

    (1)为什么要引入以列序为主序和以行序为主序的存储方式?

      因为一般情况下存储单元是单一的存储结构,而数组可能是多维的结构,则用一维数组存储数组的数据元素就存在着次序约定的问题,所以就有了以列序为主序和以行序为主序的存储方式。

    (2)以列序为主序的存储方式的存储地址计算公式:

       LOC(i,j) = LOC(0,0) + (m*(j-1)+(i-1))*L

       LOC(i,j)是a(i,j)的存储位置; LOC(0,0)是a(0,0)的存储位置(即二维数组的起始存储位置,为称为基地址或基址);m是数组的总行数,L是单个数据元素占据的存储单元。

    (2)以行序为主序的存储方式的存储地址计算公式:

       LOC(i,j) = LOC(0,0) + (n*(i-1)+(j-1))*L

       LOC(i,j)是a(i,j)的存储位置; LOC(0,0)是a(0,0)的存储位置(即二维数组的起始存储位置,为称为基地址或基址);n是数组的总列数,L是单个数据元素占据的存储单元。

解题过程

       行n=8,列m=10

     (1)行优先

       A[5,8] = A(0,0) + (m*(i-1)+(j-1))*L = BA + (10 * ( 5-1) + ( 8-1 )) * 3 = BA + 141

    (2)列优先

       A[5,8] = A(0,0) + (n*(j-1)+(i-1))*L = BA + (8 * ( 8-1) + ( 5-1 )) * 3 = BA + 180

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160386.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql:Windows修改MySQL数据库密码(修改或忘记密码)

    mysql:Windows修改MySQL数据库密码(修改或忘记密码)今天练习远程访问数据库时,为了方便访问,就想着把数据库密码改为统一的,以后我们也会经常遇到MySQL需要修改密码的情况,比如密码太简单、忘记密码等等。在这里我就借鉴其他人的方法总结几种修改MySQL密码的方法。我就以实际操作修改root密码为例,操作系统为windows这里我们需要注意的是,修改MySQL是需要MySQL中的root权限,一般用户是无法更改的,除非请求管理员。修改密码的三种简…

    2022年5月10日
    35
  • iOS UIWebView获取当前JSContext

    iOS UIWebView获取当前JSContext

    2021年9月15日
    74
  • linux下elasticsearch 安装、配置及示例「建议收藏」

    linux下elasticsearch 安装、配置及示例「建议收藏」简介开始学es,我习惯边学边记,总结出现的问题和解决方法。本文是在两台linux虚拟机下,安装了三个节点。本次搭建es同时实践了两种模式——单机模式和分布式模式。条件允许的话,可以在多台机器上配置es节点,如果你机器性能有限,那么可以在一台虚拟机上完成多节点的配置。如图,是本次3个节点的分布。hostnameIPes节点master192.168.137.100

    2022年6月16日
    35
  • oracle数据库用户更改密码_oracle用户密码忘记了

    oracle数据库用户更改密码_oracle用户密码忘记了我用的另一种方法,在dbeaver中打开sql编辑器,密令和下面所说一致1.WIN+R打开运行窗口,输入cmd进入命令行:输入sqlplus,输入用户名,输入口令(如果是超级管理员SYS的话需在口令之后加上assysdba)进入sql命令行;连接成功后,输入“selectusernamefromdba_users”查看用户列表。3.若修改某一个用户密码,修改用户口令格式为:alteruser用户名identifiedby新密码;4.以apps为例,密码修改为

    2022年7月28日
    15
  • nhibernate的简单配置与使用

    nhibernate的简单配置与使用配置nhibernate的方式有两种,一种是通过xml文件的方式配置,还有就是通过class的方式配置。网上大多数是以xml的方式配置nhibernate,本文则已class的方式来配置,并通过IOC(依赖注入,本文以构造注入)的方式注册nhibernate。下面就以一个demo来说明配置、注入以及使用的方法。创建一个工程,在工程下添加三个项目。1、Web工程(demo采用的是MVC框架)…

    2022年7月14日
    18
  • String,StringBuffer和StringBuilder的区别及使用场景[通俗易懂]

    String,StringBuffer和StringBuilder的区别及使用场景[通俗易懂]String:字符串常量。StringBuffer与StringBuilder是字符缓冲变量。StringBuffer与StringBuilder中的方法和功能完全是等价的,只是StringBuffer中的方法大都采用了synchronized关键字进行修饰,因此是线程安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。StringBuilder是在…

    2022年9月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号