題目:將乙個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 從這道題出題意圖來看,出題者主要是想考面試者的思維是否敏捷清醒 做事...