原址转置算法使用环境:指针type* 指向的一维数据,指定矩阵宽度W,高度H。转置前的数据高度H,宽度W,转置之后的数据高度为W宽度为H。
以int* a=[1,2,3,4,5,6,7,8,9,10,11,12]为例,3行4列排放为
[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]
转置之后的数据为: [ 1 5 9] [ 2 6 10] [ 3 7 11] [ 4 8 12] 转置后的*a=[1,5,9,2,6,10,3,7,11,4,8,12]
序号 1 2 3 4 5 6 7 8 9 10 11 12 \ 1 2 3 4 5 6 7 8 9 10 11 12 \ 1 5 9 2 6 10 3 7 11 4 8 12 元素2的位置上被5占据了,5原来的位置被6占据了,6的位置被10占据了,10的位置被4占据了,4的位置被2占据了,也就是形成了2->5->6->10->4->2的环。
1 | |