稀疏矩阵快速转秩

来源:互联网 发布:java oracle 读表 编辑:程序博客网 时间:2024/05/29 04:43
/*    稀疏矩阵的转秩*/#include<iostream>using namespace std;//矩阵的行数,列数,非零元素的个数int matrix_r;int matrix_c;int matrix_num;int matrix[1000][3]={{0,3,22},{0,6,15},{1,1,11},{1,5,17},{2,3,-6},{3,5,39},{4,0,91},{5,2,28}};//上限为1000个元素,二维矩阵保存稀疏矩阵中的值int new_matrix[1000][3];int rowSize[1000];int rowStart[1000];int main(){    //给出测试元素    matrix_r = 6;    matrix_c = 7;    matrix_num = 8;    //初始化    for(int i=0;i<matrix_c;i++){        rowSize[i] = 0;    }    //根据列的值预处理出转秩后每行中元素的个数以及行第一个元素所在的位置    rowStart[0] = 0;    for(int i=0;i<matrix_num;i++){       rowSize[matrix[i][1]]++;    }    for(int i=1;i<matrix_c;i++){        rowStart[i] = rowStart[i-1] + rowSize[i-1];    }    for(int i=0;i<matrix_num;i++){        int j = rowStart[matrix[i][1]];        new_matrix[j][0] = matrix[i][1];        new_matrix[j][1] = matrix[i][0];        new_matrix[j][2] = matrix[i][2];        rowStart[matrix[i][1]]++;    }    for(int i=0;i<matrix_num;i++){        for(int j=0;j<3;j++){                cout<<" "<<new_matrix[i][j];        }        cout<<endl;    }    return 0;}
原创粉丝点击