数据结构-----------------数组

107 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

数组

是由类型相同的数据元素构成的有序集合

数组的顺序存储

二维数组a[m][n]以一维方式存储时按位置查询

首元为a[0][0]时      以行存储  LOC(i,j)=LOC(0,0)+(n*i+j)L

                              以列存储  LOC(i,j)=LOC(0,0)+(m*j+i)L

首元为a[1][1]时      以行存储 LOC(i,j)=LOC(1,1)+(n*(i-1)+(j-1))L

                              以行存储 LOC(i,j)=LOC(1,1)+(n*(j-1)+(i-1))L        

特殊矩阵的压缩存储   

          矩阵从[0][0]开始   一维存储从[0]开始   ps:一旦前提条件更改公式就可能不适用

   1)对称矩阵

          转换为一维的存储空间为   n(n-1)/2

          行序存储

                    k=i(i+1)/2+j    (i>=j)

                    k=j(j+1)/2+i    (j>i)

   2)三角矩阵

          转换为一维的存储空间为   n(n-1)/2+1

          行序存储  存上三角

                    k=i(2*n+1-i)/2+j-i   (i>=j)

                    k=n(n+1)/2   (j>i)

          行序存储  存下三角

                    k=i(i+1)/2+j    (i>=j)

                    k=n(n+1)/2     (j>i)

3)对角矩阵

  转换为一维的存储空间为   3*n-2+1

          行序存储  k=3*i-1+j-(i-1)=2*i-j