Entry in source row Before processing source row
i becomes entry in destination row j. Visit source rows in descending order and prepend, producing increasing destination column order without a sorting pass.def transpose: SparseMatrix = {
val out = new SparseMatrix(N)
var i = N - 1
while (i >= 0) {
for ((j, x) <- rows(i)) {
out.rows(j) = (i, x) :: out.rows(j)
}
i -= 1
}
out
}i, each destination row contains exactly the contributions from source rows with index greater than i, in increasing index order. Prepending index i preserves that order, and each source position is unique. Hence the representation invariant holds andThe source sparse matrix is unchanged. Articles by others on the same topic
There are currently no matching articles.