带状矩阵
:
当
∣
i
−
j
∣
>
1
时,有
a
i
j
=
0
(
1
<
=
i
,
j
≤
n
)
当|i -j|>1时,有aij=0 (1<=i, j ≤n)
当∣i−j∣>1时,有aij=0(1<=i,j≤n)压缩存储策略:按
行优先
((或列优先)原则,只存储带状部分。①已知aij求数组下标k:
前i-1行共 3 ( i − 1 ) − 1 3(i-1)-1 3(i−1)−1个元素
aij是i行第 j − i + 2 j-i+2 j−i+2个元素
aij是第 2 i + j − 2 2i+j-2 2i+j−2个元素
k = 2 i + j − 3 k=2i+j-3 k=2i+j−3(
数组下标从0开始
)②若已知数组下标k,如何得到i,j?
即第k+1个元素:
i = 「 ( k + 2 ) / 3 ] i =「(k+2)/3] i=「(k+2)/3](向上取整)
由 k = 2 i + j − 3 k=2i+j-3 k=2i+j−3得,
j = k − 2 i + 3 j=k-2i+3 j=k−2i+3