按顺时针打印二维数组如:
1  2  3  4
14 15 16 5
13 20 17 6
12 19 18 7
11 10 9  8打印出来的顺序:1 2 3 4....20
并且分析算法时间复杂与空间负责度

解决方案 »

  1.   


    //假设数组为data
    int minX = 0;
    int maxX = 3;
    int minY = 0;
    int maxY = 3;int a = 0;//打印的方向while(mixX < maxX && minY < maxY)
    {
       switch(a)
       {
          case 0://上边
             for(int i = minX; i <= maxX; i++)
             {
                Console.Write(" {0}",data[minY][i]);
             }
             a = 1;
             minY++;
             break;
          case 1://右边
             for(int i = minY; i <= maxY; i++)
             {
                Console.Write(" {0}",data[i][maxX]);
             }
             a = 2;
             maxX--;
             break;
          case 2://下边
             for(int i = maxX; i >= minX; i--)
             {
                Console.Write(" {0}",data[i][maxY]);
             }
             a = 3;
             maxY--;
             break;
          case 3://左边
             for(int i = maxY; i >= minY; i--)
             {
                Console.Write(" {0}",data[minX][i]);
             }
             a = 0;
             minX++;
             break;
       }
    }
    Console.ReadLine();