150 likes | 317 Views
資料結構設計與 C++ 程式應用 Fundamentals of Data Structures and Their Applications Using C++. 第 2 章 陣列結構. 資料結構設計與 C++ 程式應用 版權所有 禁止重製. 陣列的宣告. 資料型態 陣列名稱 [ 陣列大小 ][ 陣列大小 ]… [ 陣列大小 ];
E N D
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第2章 陣列結構 資料結構設計與C++程式應用 版權所有 禁止重製
陣列的宣告 • 資料型態 陣列名稱[陣列大小][陣列大小]… [陣列大小]; • 資料型態 陣列名稱[陣列大小][陣列大小]… [陣列大小] = {初值}; • int X[10] = {73, 65, 52, 24, 83, 17, 35, 96, 41, 9};
陣列的宣告 • int Y[2][3] = { {1,2,3}, // 設定第0列初值 {4,5,6}, // 設定第1列初值 };
陣列的表示法 • 一維陣列 • A[1],A[2],…,A[n] LOC(ai ) = A的起始位址+ ai的索引位移 = α+(i-1)S 。 • α為陣列A的起始位置,而S為陣列元素所佔之空間大小。 • ?? If start with A[0], A[1],A[2],…,A[n-1] then LOC(ai ) = α+(i-0)S = α+(i)S
陣列的表示法 (2006/9/29) • 二維陣列 • B[m][n] • 【以列為主 (Row Major) 】 LOC(bij) = α + (i-1)nS + (j-1)S。 • 【以行為主 (Column Major) 】 LOC(bij) = α + (j-1)mS + (i-1)S。 • α為陣列B的起始位置,而S為陣列元素所佔之空間大小。
陣列的表示法 • 三維陣列 • C[m][n][o] • 【以列為主 (Row Major) 】 LOC(cijk) = α + (i-1)noS + (j-1)oS + (k-1)S。 • 【以行為主 (Column Major) 】 LOC(cijk) = α + (k-1)mnS + (j-1)mS + (i-1)S。
陣列的表示法 • N維陣列 K[u1][u2]...[un] • 【以列為主 (Row Major) 】 LOC( ) = α + (i1-1)u2u3…un S + (i2-1)u3u4…un S + (i3-1)u4u5…un S + … + (in-1-1)un S + (in-1) S • 【以行為主 (Column Major) 】 LOC( ) = α + (in -1)un-1un-2…u1 S + (in-1-1)un-2un-3…u1 S + (in-2-1)un-3 un-4 …u1 S + … + (i2 -1)u1 S + (i1 -1)S
陣列的表示法 • 下三角矩陣 • 以列為主 (Row Major) LOC(Xij) = α + i (i-1)S + (j-1)S。
陣列的表示法 • 上三角矩陣 • 以列為主 (Row Major)
二維陣列的應用 • 矩陣乘積
二維陣列的應用 • 矩陣乘積
二維陣列的應用 • 矩陣轉置 • B[j][i]=A[i][j] • 矩陣A及其轉置矩陣B
二維陣列的應用 • 反射矩陣 • 矩陣A及其反射矩陣B
二維陣列的應用 • 稀疏矩陣(Sparse Matrix) • 原矩陣為 8*8,共有 9 個非 0 元素