1樓:補佳林
其實是樓上的思路。。。
比如說二維陣列,記憶體裡面按列主序和行主序分別放兩份資料,按列訪問時讀取列主序,按行訪問時讀取列主序。。這樣似乎可以推到高維的情況。
這樣來做的話,修改陣列的乙個元素就需要更多的操作了,不過樓主只問了讀取的情況。
2樓:Milo Yip
這問題可以不嚴格地轉化為:給定二維及更高維的柵格,能不能把一根繩子放置在裡面,令繩子通過每個柵格僅一次,而又能另繩子通過每對相鄰的柵格。顯然答案是不可以。
但是有一些方法,可能會令相鄰柵格的繩子距離平均一些,例如1. Tiling,常用於矩陣乘法,可增加locality,改善cache coherence。
2. Z-order curve (又作Morton order),廣泛應用在GPU的紋理儲存上(有時稱為texture swizzling),提高locality。
3. Hilbert curve
3樓:
你是說,要訪問乙個矩陣的某一行向量或列向量嗎?
Matlab裡有這兩個表示式。
別的語言裡,再不濟,可以自己寫這兩個函式實現之。
還有兩個奇怪的思路:
1.轉置矩陣,然後把行當作列來訪問。
2.康托爾配對函式。/*個人覺得這個是無敵的*/
4樓:qaqabincs
如果位址分段設計,比如乙個完整的位址是a|b,對於行而言,ab是連續位址,對於列,a值域可視為連續。貌似二維是有可能構造定址演算法。是否可以推廣至高維情況,貌似有設計空間,但可能會浪費一些記憶體。
可能與題主初衷有出入。
countif多維陣列是如何計算的?
資料愛好者記 countif range,criteria 是條件計數函式,第乙個引數是資料區域,第二個引數是條件,函式返回的是資料區域中滿足條件的資料的個數。1.先用普通函式進行運算,我們輸入函式 countif A1 B7,C1 計算的是A1 B7內 C1的資料的個數,A1 B7中等於1的個數是...
如何用python實現行列互換?
程式設計小白一枚,使用python 3.6 笨辦法 b fori inrange len a 0 row forj inrange len a row.a j i b.row print b 以上寫成一句 print row i for rowina fori inrange len a 0 用函式...
C語言如何實現陣列的自增長?
王飛 template void Array reallocate unsigned int new size T old data data data new T new size allocated new size int end used new size used new size for...