Write a routine that prints out a 2-D array in spiral order

Write a routine that prints out a 2-D array in spiral order

     jeccy (燕飞月天) 于 2006年10月28日21:37:09 星期六 提到:

我的理解,给定2维数组
1 2 3三角形判断
8 9 4
7 6 5
“螺旋式”顺序输出:1 2 3 4 5 6 7 8 9
【 在 bluexyz (数据结构是根本) 的大作中提到: 】

  private   static   void  PrintNumberasSpiralOrder()
        
{
            
// 1  2  3   4
            
// 12 13 14  5
            
// 11 16 15  6
            
// 10 9   8  7
            
            
// 1,  2 , 3,  4,  5
            
// 16, 17, 18, 19, 6
            
// 15, 24, 25, 20, 7
            
// 14, 23, 22, 21, 8
            
// 13, 12, 11, 10, 9
             int [,] a  =   new   int [,]
            
1 2 3 4 5  }
            
16 17 18 19 6  }
            
15 24 25 20 7  } ,
            
14 23 22 21 8  } ,
            
13 12 11 10 9  }  }
;
            
// int[,] a = new int[,] { { 1, 2, 3, 4 }, { 12, 13, 14, 5 }, { 11, 16, 15, 6 }, { 10, 9, 8, 7 } };
            
// int[,] a = new int[,] { { 1, 2 }, {4,3} };
             const   int  N  =   5 ;
            
//  spiral
             for  ( int  i  =  N  -   1 , j  =   0 ; i  >   0 ; i -- , j ++ )
            
{
                
// i 从最大维度数开始
                
// j 从最小维度数开始
                
// i--来缩小范围
                
// j++来缩小范围
                
// k 增长缩小因子
                 for  ( int  k  =  j; k  <  i; k ++ )
                    System.Console.Write(
" {0}  " , a[j, k]); Console.WriteLine( "" );
                
for  ( int  k  =  j; k  <  i; k ++ )
                    System.Console.Write(
" {0}  " , a[k, i]); Console.WriteLine( "" );
                
for  ( int  k  =  i; k  >  j; k -- )
                    System.Console.Write(
" {0}  " , a[i, k]); Console.WriteLine( "" );
                
for  ( int  k  =  i; k  >  j; k -- )
                    System.Console.Write(
" {0}  " , a[k, j]); Console.WriteLine( "" );
            }

            
//  special case for middle element if N is odd
            
// 如果是奇数,则要条印中间的数。
             if  (N  %   2   ==   1 ) System.Console.Write(a[(N  -   1 /   2 , (N  -   1 /   2 ]);
        }

Reference : http://bigtiger2005.spaces.live.com/blog/cns!4e967c6fe38e7c14!141.entry?wa=wsignin1.0

你可能感兴趣的:(Write a routine that prints out a 2-D array in spiral order)