Matrix transposition: Difference between revisions

→‎{{header|Go}}: added transpose in place
(→‎{{header|Go}}: added transpose in place)
Line 888:
[3 6]
</pre>
===Transpose in place===
{{trans|C}}
<lang go>func (m *matrix) transposeInPlace() {
h := len(m.ele) / m.stride
for start := range m.ele {
next := start
i := 0
for {
i++
next = (next%h)*m.stride + next/h
if next <= start {
break
}
}
if next < start || i == 1 {
continue
}
 
next = start
tmp := m.ele[next]
for {
i = (next%h)*m.stride + next/h
if i == start {
m.ele[next] = tmp
} else {
m.ele[next] = m.ele[i]
}
next = i
if next <= start {
break
}
}
}
m.stride = h
}</lang>
 
=={{header|Groovy}}==
1,707

edits