日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

稀疏矩阵快速转置c语言代码(详解)

發布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 稀疏矩阵快速转置c语言代码(详解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過下列代碼解釋:
這么說吧,剛開始我也不是很理解。在經過一段時間研究后才枉然大悟。
1.首先說下,在以三元組表的形式存矩陣元素時。如果是以行向量來存的話,在輸入與輸出時,同一行中的數據,列不一定按順序來。但行必須從上到下。
2.所以按照上面的規則,如果按一般思路,之所以不能直接行,列交換是因為直接交換后,行的順序一般是亂的,在輸出時就沒有辦法輸出正確的矩陣。所以一般方法就得從第一列一直遍歷到最后一列,每一列都要遍歷全部來保證順序。
3.而在快速轉置的方法中 cpot【】保存的是正確的行序,所以可以直接行,列值交換而不會破壞行序

TSMatrix* TransTSMatrix_plus(TSMatrix* M) {TSMatrix* T;T = (TSMatrix*)malloc(sizeof(TSMatrix));T->tu = M->tu;T->mu = M->nu;T->nu = M->mu;//這三部是矩陣的行,列值交換,不用多說了int num[max] = {};//記住每一列中非零元素個數int cpot[max] = {};//每一列第一個非零元素的正確位置for (int p = 0; p < M->tu; p++)++num[M->data[p].j];//巧妙求非零元素個數for (int p = 1; p < M->tu; p++)cpot[p] = cpot[p - 1] + num[p - 1];for (int p = 0; p < M->tu; p++){int col = M->data[p].j;int q = cpot[col];T->data[q].i = M->data[p].j;T->data[q].j = M->data[p].i;T->data[q].data = M->data[p].data;++cpot[col];}return T;}

總結

以上是生活随笔為你收集整理的稀疏矩阵快速转置c语言代码(详解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。