矩阵的存储顺序:按行优先存储 vs. 按列优先存储

涉及到在计算机中使用矩阵时,首先会碰到存储矩阵的问题。因为计算机存储空间是先后有序的,如何存储A[m*n]的m*n个元素是个问题,一般有两种:按行优先存储和按列优先存储。

 
  
row-major:存成a11,a12,...,amn的顺序。
     PASCAL, C/C++,, Python语言中,数组按行优先顺序存储。
     行优先顺序推广到多维数组,可规定为先排最右的下标。
 
  
column-major:存成a11,a21,...,amn的顺序。
    FORTRAN语言,Matlab中,数组按列优先顺序存储。
    列优先顺序推广到多维数组,可规定为先排最左的下标。

For example:
序列 A = [1,2,3,4],用Matlab 和 Python 分别reshape为2*2大小:
Matlab中 reshape(A, [2 2]), 得到 [[1 3] [2 4]]
Python中 A.reshape(2,2),    得到[[1 2] [3 4]]
 
  

Ref:

http://en.wikipedia.org/wiki/Row-major_order

http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html

你可能感兴趣的:(算法和数据结构)