我想了解低於該調換的行X山坳移調矩陣:如何這段代碼換位矩陣
int transpose(int* a, int row, int col)
{
for(int i = 0; i < row*col; i++)
{
int old = i;
do
{
old = (old%row)*col + old/row;
}
while(old < i)
swap(a[i],a[old])
}
}
什麼這行(old = (old%row)*col + old/row)
是做矩陣碼?
顯然,外層循環遍歷矩陣的所有元素。但是,並不是每個元素都要與其合作伙伴交換。我覺得這有點難以理解。我覺得有點奇怪,很明顯,'old'的值不會隨着while循環迭代而改變。 – Codor
它在排列週期之後。看到這裏:https://en.wikipedia.org/wiki/In-place_matrix_transposition – samgak
第一個和最後一個元素將保持在他們的位置..其他元素將被交換。到目前爲止,我所理解的是每個元素a [i]我們試圖找到它的舊位置並與之交換 – Bhuwan