KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is it possible to transpose a (m,n) matrix in-place, giving that the matrix is represented as a single array of size m*n ? The usual algorithm transpose(Matrix mat,int rows, int cols ){ //construction step Matrix tmat; for(int i=0;i<rows;i++){ for(int j=0;j<cols;j++){ tmat[j][i] = mat[i][j]; } } } doesn't apply to a single array unless the matrix is a square matrix. If none, what is the minimum amount of additional memory needed?? EDIT: I have already tried all flavors of for(int i=0;i<n;++i) { for(int j=0;j<i;++j) { var swap = m[i][j]; m[i][j] = m[j][i]; m[j][i] = swap; } } And it is not correct. In this specific example, m doesnt even exist. In a single line matrix mat[i][j] = mat[i*m + j] , where trans[j][i] = trans[i*n + j]
Tags (comma-separated)
Save Edits
Cancel