稀疏数组
稀疏数组(包括稀疏向量、稀疏矩阵等)是含有足够多 0 的数组,通过用特殊的方式表示它们,能提升时间和空间的效率。
阐述
实例
稀疏矩阵的稀疏列存储
struct SparseMatrixCSC{Tv,Ti<:Integer} <: AbstractSparseMatrixCSC{Tv,Ti}
m::Int # Number of rows
n::Int # Number of columns
colptr::Vector{Ti} # Column j is in colptr[j]:(colptr[j+1]-1)
rowval::Vector{Ti} # Row indices of stored values
nzval::Vector{Tv} # Stored values, typically nonzeros
end
一个 的矩阵存储包括 3 个部分:
colptr
:一个 大小的向量,存储了每一列在总存储中的起始位置rowval
:每一个元素的行位置nzval
:所有非零元的总存储,按列排布
元素的逐列读取通常比较快,但是逐行读取就比较慢。插入元素通常非常慢。