❶ 上三角矩陣按行優先存儲公式
題目出錯了,上三角肯定是 i<=j
公式也不對,怎麼可能跟n無關呢,第i行的元素個數是n-i+1,
a(i,j)前面有i-1行,這i-1行共有(n-1+1)+...+(n-(i-1)+1)個元素,第i行有j-i+1,加在一起再減1就是k(因為數組下標為0)
❷ 對於二維數組,有行優先順序和什麼兩種不同的存儲方式
對於二維數組,有行優先順序和列優先順序兩種不同的存儲方式。
二維數組A[m][n],這是一個m行n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t。
按「列優先順序」存儲時,地址計算為:LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t。存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組。
(2)行優先列優先壓縮存儲公式擴展閱讀:
數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。數組中的所有元素都具有相同類型(和結構類中的欄位不同,它們可以是不同類型)。數組中的元素存儲在一個連續性的內存塊中,並通過索引來訪問(和結構類中的欄位不同,它們通過名稱來訪問)。
在增加數組的維數時,數組所佔的存儲空間會大幅度增加,所以要慎用多維數組。使用 Variant 數組時更要格外小心,因為他們需要更大的存儲空間。
❸ c語言行優先和列優先轉換
注意行下標從0開始,列下標從1開始
行優先,目標地址ar = 8*10+5 == 85
列優先,85/9==9,85%9==4,所以是在第10列,第3行,B
❹ 數據結構的數組中,以行為優先和以列為優先分別是怎樣存儲的,怎麼計算
Am*n L(位元組)
行:Loc(i,j)=Loc(0,0)+(i*n+j)*L
Loc(i,j)=Loc(1,1)+((i-1)*n+i-1)*L
列:Loc(i+j)=Loc(0,0)+(j*m+i)*L
Loc(i,j)=Loc(1,1)+((i-1)*m+i-1)*L
❺ 設有一個 10 × 10的對稱矩陣 A採用壓縮方式進行存儲,存儲時以按行優先的順序
對稱矩陣且存儲的是下三角,那你首先得看a65是在下三角還是上三角,因為上三角的值是由下三角對稱的值來存儲的。6>5,a65在下三角。按行存儲下三角,從第一行開始分別存儲1,2,3,...個元素,a65表示第7行的第6個元素,那他前面的數據占的位元組就是(1+2+3+4+5+6+5)*2=52,所以a65的地址是下一個53
❻ 矩陣的壓縮存儲是什麼
二維數組在形式上是矩陣,因此一般用二維數組來存儲矩陣。在不壓縮存儲的情況下,矩陣採用按行優先或按列優先方式存儲,佔用的存儲單元數等於矩陣的元素個數。在實際應用中,經常出現一些階數很高的矩陣,同時在矩陣中非零元素呈某種規律分布或者矩陣中有大量的零元素,若仍然用常規方法存儲,可能存儲重復的非零元素或零元素,這將造成存儲空間的大量浪費。因此對這類矩陣進行壓縮存儲,從而合理地利用存儲空間。
為了節省存儲空間,可以利用特殊矩陣的規律,對它們進行壓縮存儲,也就是說為多個值相同的元素只分配一個存儲單元,對零元素不分配空間。適合壓縮存儲的矩陣一般是值相同的元素或者零元素在矩陣中分布有一定規律的特殊矩陣和稀疏矩陣。常見的特殊矩陣有對稱矩陣、三角矩陣和對角矩陣。
❼ 一個二維數組的行優先,列優先轉換。
對於行優先的數組,其中存儲是元素是先行後列。若將題目中的元素M[0][0]存儲在第一個地址空間,則元素M[8][5]的地址為8×10+5=85。
而對於列優先的數組,其中的元素存儲則是先列後行。同樣,若將題目中的元素M[0][0]存儲在第一個地址空間,則元素M[5][8]的地址為((8-1)×9)+(5+1)=69。
這樣,可以看出,按列存儲的M[5][8]與行按行存儲的M[8][5]不是同一個地址.
實際上,按行存儲的元素M[8][5]對應按列存儲的元素為M[4][10]=((10-1)×9)+(3+1)=85
注意:這里假設每個元素只佔一個地址空間的前提下計算的結果。
❽ 1個10×10的對稱矩陣採用壓縮存儲方式以行優先方式第一行存儲一個元素
選D.
因為你用的存貯方式之存下三角部分,所以實際上存貯的是第8行第5列.前7行一共7*8/2=28個元素,所以這個元素在第33個單元.
❾ 設有一個10階的對稱矩陣A,採用行優先壓縮存儲方式,a11為第一個元素,其存儲地址為1,每個元素佔一個位元組
1+( 8*(8-1)/2+5-1 ) = 33,因為從1開始數的,故公式為k = i(i-1)/2+j-1
❿ matlab和Fortran二維數組為什麼按列優先存儲
行優先和列優先兩種。具體情況如下:數組的順序存儲方式由於計算機內存是一維的,多維數組的元素應排成線性序列後存人存儲器。數組一般不做插入和刪除操作,即結構中元素個數和元素間關系不變化。一般採用順序存儲方法表示數組。(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語言中,數組按列優先順序存儲。②列優先順序推廣到多維數組,可規定為先排最左的下標。