旋转一维阵列矩阵

时间:2010-11-27 17:40:46

标签: arrays matrix rotation dimension

我需要一种算法(顺时针)旋转由一维数组表示的矩阵 到目前为止,我已经找到了以下链接,但无法弄清楚是什么让我更接近我需要的解决方案:
http://basgun.wordpress.com/2008/04/11/rotate-array/
http://www.rawkam.com/?p=1008

任何建议或线索都将不胜感激!

赫里斯托斯

编辑:这是示例
(1 2 3(顺时针旋转一个旋转周期)(7 4 1
4 5 6 ---------> 8 5 2
7 8 9)9 6 3)

(7 4 1(顺时针方向旋转周期)(9 8 7
8 5 2 ---------> 6 5 4
9 6 3)3 2 1)

2 个答案:

答案 0 :(得分:0)

维基百科有一篇关于“矩阵的顺时针旋转”(In-place matrix transposition -> Algorithms

的精彩文章

您没有说出您使用的是哪种语言,但在这种情况下,类C语言有一种很好的方式来访问“由一维数组表示的矩阵”。

答案 1 :(得分:0)

很简单

顺时针旋转时钟的步骤

1.采用矩阵转置

2.Swap Columns

/*a is the given matrix , b is the output matrix ,n is the size of the matrix*/
System.out.println("Transpose of given matrix\n");
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
              b[i][j]=a[j][i];
            }
        }

        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                System.out.print(b[i][j]+"\t");
            }
            System.out.println("\n");
        }

        System.out.println("Clockwise Rotation of given matrix\n");

        for(i=0;i<n/2;i++)
        {
            for(j=0;j<n;j++)
            {

                sw=b[j][i];
                b[j][i]=b[j][n-1-i];
                b[j][n-1-i]=sw;
            }
            System.out.println("\n");
        }


        //Print the Result 
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                System.out.print(b[i][j]+"\t");
            }
            System.out.println("\n");
        }

经过测试和工作