zoukankan      html  css  js  c++  java
  • 二维数组 A[m][n] 按行优先和按列优先的 下标地址转换公式

    设二维数组 A[m][n] 按行优先存储, 每个元素占 p 个字节,

      则 Loc(i, j) 的地址为 (i * n + m) * p, 第 i 行前面有 i 行, 每行有 n 个元素, 加上 第 i 行的的 j 个元素,所以地址 为 (i * n + m) * p,

      1. 若 j 从下标 1 开始, 则 Loc(i, j) = (i * n + j - 1)

         第 i 行的 第 j 个元素,在第 i 行中 前面只有 j  - 1 个元素,

      2. 若 i 从下标 1开始, 则 Loc(i, j) = ((i - 1) * n + j)

      3. 若 i, j 均从 下标 1 开始, 则 Loc(i, j) = ((i - 1) * n + j - 1)

    若该数组按列优先存储,

      则 Loc(i, j) 为  (j * m + i) * p, 第 j  列前面有 j 列,每列有 m 个元素, 加上 第 j 列的 i 个元素,所以为 (j * m + i) * p

      1. 若 j 从下标 1 开始, 则 Loc(i, j) = ((j - 1) * m + i);

        因为 第 j 列前面只有  (j - 1) 列

      2. 若 i 从下标 1开始, 则 Loc(i, j) = (j * m + i - 1)

        第 i 个元素前面实际上只有 i - 1 个元素

      3. 若 i, j 均从 下标 1 开始, 则 Loc(i, j) = ((j - 1) * n + i - 1)

    总结:

      按行优先 Loc(i, j) = (i * n + j) * p, 按列优先 Loc(i, j) = (j * m + i) * p, 行从下标1 开始  i 就减一, 列从下标 1 开始 , j 就减一

      

  • 相关阅读:
    java域名解析
    JDK8新特性面试
    java设计模式--单例模式
    EclipseEE导入项目出现的那些问题
    Eclipse配置Git发布项目到Github
    SVN本地服务器的搭建
    APK的反编译
    Oracle系列--级联删除和级联更新
    Oracle创建表空间和用户
    全方面了解和学习PHP框架 PHP培训教程
  • 原文地址:https://www.cnblogs.com/hi3254014978/p/12373059.html
Copyright © 2011-2022 走看看