2010-04-21 17 views
6

जगह में 2 डी मैट्रिक्स को कैसे स्थानांतरित करें?स्थान पर बहुआयामी सरणी कैसे स्थानांतरित करें

+3

वर्ग या नहीं है? यह एक बड़ा अंतर – Anycorn

+1

@aaa बनाता है: जगह में एक गैर वर्ग मैट्रिक्स transposing भावना का एक बहुत नहीं है। – Jens

+2

हालांकि प्रतिनिधित्व के आधार पर (उदाहरण के लिए एन * एम आयामों की एक सरणी का उपयोग करके) यह किया जा सकता है। –

उत्तर

6
for (int i=0; i<n; i++) { 
    for (int j=0; j<i; j++) { 
    temp = a[i][j]; 
    a[i][j] = a[j][i]; 
    a[j][i] = temp; 
    } 
} 
+2

चेतावनी में "मौत के लिए पीटा" था! यह केवल वर्ग सरणी के लिए सही है। गैर-स्क्वायर मैट्रिक्स कार्यान्वयन के लिए नीचे @ डीएलबी का विकिपीडिया लिंक देखें। – Mayank

4

आप एक भाषा का उल्लेख किया है नहीं है, लेकिन आम तौर पर, आप क्या करते हैं:

let a be your array. 
for each i,j with i<j switch a[i,j] with a[j,i] 
2

एक वर्ग मैट्रिक्स के पक्षांतरित हम मुख्य विकर्ण के ऊपर या इसके नीचे तत्वों विचार करने की जरूरत प्राप्त करने के लिए और मुख्य विकर्ण साथ अपने प्रतिबिंब के साथ एक स्वैप:

for i->0 to N-1 
for j->i+1 to N-1 
    swap matrix[i][j] with matrix[j][i] 
0

क्यों परेशान? किसी भी एक्सेस कथन में बस इंडेक्स स्वैप करें।

+9

वहाँ "गलत" के क्रम में 2 डी सरणियों पहुँचने के लिए एक गंभीर प्रदर्शन दंड है - यह आदेश सन्निहित स्मृति एक्सेस (इकाई कदम) के लाभों को प्राप्त करने के लिए एक पक्षांतरित की कीमत अदा करने को अक्सर बेहतर है। –

-1

यह अच्छी तरह से काम करने लगता है:

सी # में
function transpose(a) 
{ 
    return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); }); 
} 
0

string[,] Value; 
//fill Value 

//create transposed array 
ValueAux = new string[Value.GetLength(1),Value.GetLength(0)]; 
for (i = 0; i < Value.GetLength(0); i++) 
{ 
    for (j = 0; j < Value.GetLength(1); j++) 
    { 
    Valueaux[j, i] = Value[i, j]; 
    } 
} 

परिणाम ValueAux में है

1
for(i=0;i<N;i++) 
    for(j=0;j<N;j++) 
    if(i!=j && j>i) 
     { 
     temp=a[i][j]; 
     a[i][j]=a[j][i]; 
     a[j][i]=temp; 
     } 

(N अपने सरणी का आकार)

संबंधित मुद्दे