O 1 空間內實現矩陣轉置

2021-06-27 08:30:21 字數 842 閱讀 8483

題目:將乙個mxn的矩陣儲存在乙個一維陣列中,程式設計實現矩陣的轉置。

#include #include /*題目:

將乙個mxn的矩陣儲存在乙個一維陣列中,程式設計實現矩陣的轉置。

詳細說明參考:

*//*求i前序, row為矩陣行數,col為矩陣列數

轉置後i在(i/row, i%row),則轉置前為(i%row, i/row)

對應在陣列中的索引為:(i%row)*col+i/row*/

int getpreindex(int i, int row, int col)

/*求i後繼, row為矩陣行數,col為矩陣列數

轉置前i在(i/col, i%col),則轉置前為(i%col, i/col)

對應在陣列中的索引為:(i%col)*row+i/col*/

int getnextindex(int i, int row, int col)

/*處理以i的環,按照前序*/

/*如:1-->4-->2-->1,則i=1,先把2的值給1, 4的值給2,依次往前即可*/

void modedata(int *a, int i, int row, int col)

a[cur] = tmp;

}/* 轉置,即迴圈處理所有環 */

void transpose(int *a, int row, int col)

/*如果沒有小於i的,則表示沒有處理過,處理環即可*/

if (next == i)

}}/*列印矩陣*/

void print(int *a, int row, int col)

{ int i;

for (i=0; i

矩陣轉置 O 1 空間

為了方便,使用一維陣列來分析。所謂矩陣轉置,行變列,列變行。在轉置的過程中,有的元素位置是不變的 對於變化位置的元素,要求o 1 空間完成,那麼這些位置的變化一定是有著規律的。舉例,2 5的矩陣,a 轉置後為at 探索下標變化 0 0 1 2 4 8 7 5 1 3 6 3 9 9 這些下標的變化是...

數字排序 o n 時間 o 1 空間

乙個時間複雜度為o n 空間複雜度為o 1 的排序演算法 收藏 乙個時間複雜度為o n 空間複雜度為o 1 的排序演算法 有n個大小不等的自然數 1 n 請將它們由小到大排序。要求程式演算法 時間複雜度為o n 空間複雜度為o 1 從這道題出題意圖來看,出題者主要是想考面試者的思維是否敏捷清醒 做事...

數字排序 o n 時間 o 1 空間

乙個時間複雜度為o n 空間複雜度為o 1 的排序演算法 收藏 乙個時間複雜度為o n 空間複雜度為o 1 的排序演算法 有n個大小不等的自然數 1 n 請將它們由小到大排序。要求程式演算法 時間複雜度為o n 空間複雜度為o 1 從這道題出題意圖來看,出題者主要是想考面試者的思維是否敏捷清醒 做事...