矩阵三元组的快速转置
生活随笔
收集整理的這篇文章主要介紹了
矩阵三元组的快速转置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 三元組矩陣的快速轉置主要借助了兩個外部數組,Num[]和Copt[],Num[]存放了轉置之前的矩陣每一列中元素的個數。Copt[]矩陣存放了轉置之后的三元組舉證項應該存放的數據結構中的位置。
2. 由于轉置前第n列第一個元素位置在轉置之后的位置是轉置之前第n列之前所有元素之和,所以通過Num[]和Copt[]數組就可以記錄轉置之后三元組矩陣每一項應該存放的位置。
?代碼:
status FasterTransposesMatrix(TSMatrix M, TSMatrix &T){T.mu = M.nu;T.nu = M.mu;T.tu = M.tu;//將數據結構中M三元組的表頭轉置的復制到T的三元組表頭中int Num[] = 0;if(T.tu){//初始化Num數組for(int col = 1; col <= M.nu; ++col){Num[col] = 0;}for(int t = 1; t <= M.tu; ++t){++Num[M.data[t].j];//計算原數組中每一列的元素個數}int copt[1] = 1;//初始化copt數組,該數組存放轉置后元素應該存放的三元組位置for (int col = 2; col <= M.nu; ++col){copt[col] = copt[col-1] + Num[col-1];}for (int p = 1; p<=M.tu; ++p){//找到轉換之前M三元組對應數據結構位置col = M.data[p].j;//找到copt中存放的當前轉置之前的三元組應該存放的轉置之后的位置q = copt[col];T.data[q].i = M.data[p].j;T.data[q].j = M.data[p].i;T.data[q].v = M.data[p].v;//不要忘記在后移一項下一個元素需要移動的位置++copt[col];}} }?
總結
以上是生活随笔為你收集整理的矩阵三元组的快速转置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA技术总结
- 下一篇: iPhone手机各代系拆机图