English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

二維陣列A[1:5:,1:5]中.若以(ROW)優先方式存放.那A(2,4)會排在第幾阿

2005-07-30 06:48:34 · 3 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

抱歉.你說的不是我要的.無法選你歐

2005-07-30 09:12:45 · update #1

看樣子快解決了
可否解釋一下A[1:5:,1:5]是啥意思~
還有A[2][4] 為啥= (2-1)*5 + 4

2005-08-01 12:08:06 · update #2

3 個解答

1, 2, 3, 4, 5
...
21, 22, 23, 24, 25

列優先(row-major) 記憶體中就是:
[1, 2, 3, 4, 5.... 21, 22, 23, 24, 25]

A[2][4] = (2-1)*5 + 4 = 9
第 9 個吧 ~

補充:
A[1:5] 就是 A[1]~A[5]
故 A[1:5, 1:5] 就是:
A[1][1], ... A[1][5]
A[2][1], ... A[2][5]
A[5][1], ... A[5][5]
共 5 * 5 = 25 個

A[i][j] 就是第 i 列(row)與第 j 行(column)的元素
A[2][4] 就是第 2 列與第 4 行的元素

因為是列優先 (row-major)
所以記憶體是 :
A[1][1], A[1][2], A[1][3], A[1][4], A[1][5], A[2][1], A[2][2], A[2][3], A[2][4] ... A[5][5]
A[2][4] 不就是第 9 個嗎?

(2-1)*5 + 4 只是心算啦
因為從 1 開始
所以減 1乘 5 表示已經算過的列: A[1][1], ... A[1][5]
最後剩下 4 個: A[2][1], ... A[2][4]
所以加 4

Visual Basic 就是這樣
C, C++ 也是 row-major, 只是 index 從 0 開始
Fortran 則是 column-major
:)

2005-08-01 11:24:20 · answer #1 · answered by Anonymous · 0 0

row major的意思就是先排完一個row再排第二個row
所以會按照
A[1,1] -> A[1,2] -> A[1,3] -> A[1,4] -> A[1,5] ->
A[2,1] -> A[2,2] -> A[2,3] -> A[2,4] -> A[2,5] ->
A[3,1] -> A[3,2] -> A[3,3] -> A[3,4] -> A[3,5] ->
A[4,1] -> A[4,2] -> A[4,3] -> A[4,4] -> A[4,5] ->
A[5,1] -> A[5,2] -> A[5,3] -> A[5,4] -> A[5,5]
的順序
所以A[2,4] = 9 = (2-1) * 5 + 4
A[1..5,1..5]是代表A的第一維從1到5 , A的第二維從1到5

2005-08-01 19:34:54 · answer #2 · answered by Anonymous · 0 0

索引不是從0開始?如果是從0開始的話。。。則參考一下這篇多維陣列轉一維陣列:
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/MultiToOneDim.htm

2005-07-30 07:25:40 · answer #3 · answered by ? 6 · 0 0

fedest.com, questions and answers