陣列 按行,列儲存

2021-06-10 02:44:15 字數 909 閱讀 9642

二維陣列

二維陣列amn可視為由m個行向量組成的向量,或由n個列向量組成的向量。

陣列的順序儲存方式

由於計算機記憶體是一維的,多維陣列的元素應排成線性序列後存人儲存器。

陣列一般不做插入和刪除操作,即結構中元素個數和元素間關係不變化。一般採用順序儲存方法表示陣列。

(1) 行優先順序

將陣列元素按行向量排列,第i+1個行向量緊接在第i個行向量後面。

例: 二維陣列amn的按行優先儲存的線性序列為:

a11,a12,…,a1n,a21,a22,…,a2n,……,am1,am2,…,amn

注意:pascal和c語言中,陣列按行優先順序儲存。

行優先順序推廣到多維陣列,可規定為先排最右的下標。

(2) 列優先順序

將陣列元素按列向量排列,第i+1個列向量緊接在第i個列向量後面。

例: 二維陣列amn的按列優先儲存的線性序列為:

a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn

注意:fortran語言中,陣列按列優先順序儲存。

列優先順序推廣到多維陣列,可規定為先排最左的下標。

陣列元素的位址計算公式

(1) 按行優先順序儲存的二維陣列amn位址計算公式

loc(aij)=loc(a11)+[(i-1)×n+j-1]×d

其中:loc(a11)是開始結點的存放位址(即基位址)

d為每個元素所佔的儲存單元數 由位址計算公式可得,陣列中任一元素可通過位址公式在相同時間記憶體取。即順序儲存的陣列是隨機訪問結構。

(2) 按列優先順序儲存的二維陣列amn位址計算公式

loc(aij)=loc(a11)+[(j-1)×m+i-1]×d

行列優先儲存與迴圈

對於乙個二維陣列a m n 在計算機記憶體中有兩種儲存方式 行優先儲存和列優先儲存。行優先儲存,顧名思義,就是一行的資料存放在一起,然後逐行存放。列優先儲存,就是每一列的資料是儲存在一起的,一列一列地存放在記憶體中。這兩種儲存方法,對於編寫遍歷二維矩陣的迴圈語句,還是有一定影響的。比如,如果是按行優...

Mysql儲存過程 行列轉換

在網上找了些資料,自己動手寫了個行列轉換的儲存過程。下面片段為表結構 create table changeprice id bigint 20 not null auto increment,sid bigint 20 not null,datecreated date not null defa...

C 按行列輸入二維陣列的每個元素的值

相信很多初學c 的人都跟我一樣有類似的疑惑,那就是c 怎麼不能按照元素在二維陣列中的位置依次輸入他的值呢?就像這樣 此處均以int型為例。方法一 利用 console.readline 和 split 方法 using system using system.collections.generic ...