[資料結構(Data Structure, DS) 教學 教程 教材 Tutorial] 三維陣列
YehYeh\'s Notepad yehyeh@gmail.com 

陣列(Array)

三維陣列

  • 多維陣列儲存於記憶體的方法只有Row-MarjorColumn兩種
  • 由1起始:A[1:u1, 1:u2: 1: u3] C++,Cpp Row-Major & Column-Major
    • 假設I0為陣列起始位址,d為每個元素的大小
    • Row-Major有u1個二維陣列,每個二維陣列大小為u2×u3
      • 第1個元素為A[1, 1, 1],位址公式為:
        • A[i, j, k ]= I0+[ (i-1)×u2u3 + (j-1)×u3 + (k-1) ]×d
        C++,Cpp 3維陣列 三維陣列  Row-Major
    • Column-Major有u3個二維陣列,每個二維陣列大小為u2×u1
      • 第1個元素為A[1, 1, 1],位址公式為:
        • A[i, j, k ]= I0+[ (i-1) + (j-1)×u1 + (k-1)×u1u2 ]×d
        C++,Cpp 3維陣列 三維陣列 Column-Major
  • 由l1,l2,l3起始:A[l1:u1, l2:u2, l3:u3]
    • 假設I0為陣列起始位址,d為每個元素的大小
    • Row-Major有u1-li個二維陣列,每個二維陣列大小為(u2-l2)×(u3-l3)
      • 第1個元素為A[1, 1, 1],位址公式為:
        • A[i, j, k ]= I0 + [ (i-l1) × (u2-l2+1)×(u3-l3+1) + (j-l2)×(u3-l3+1)+(k-l3)]×d
    • Column-Major有u3-l3個二維陣列,每個二維陣列大小為(u2-l2)×(u1-l1)
      • 第1個元素為A[1, 1, 1],位址公式:
        • A[i, j, k ]= I0 + [ (i-l1) + (j-l2)×(u1-l1+1)+(k-l3)×(u2-l2+1)×(u1-l1+1)]×d