A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迷途羔羊 中级黑马   /  2015-8-31 00:30  /  230 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//螺旋排序,二维数组
package com.itheima2;

public class Test {
       
            public static void main(String[] args){  
                    arraynum(6);  
            }  
          
        //便于改代码..输入不同y值输出不同的二维数列  
            private static void arraynum(int y)  
            {  
                    int[][] arr=new int[y][y];  
                    int n=arr.length;  
                    int max=0;  
                    int c=0;  
                    specArr(arr,n,max,c);  
                    arrprint(arr);  
            }  
          
           //高级for输出打印用的  
            private static void arrprint(int[][] h) {  
                    for(int[] in:h)  
                    {  
                            for(int t:in)  
                            {         
                                    if(t<10)System.out.print(" "+t+" ");  
                                    else System.out.print(t+" ");  
                            }  
                            System.out.println();  
                    }  
                      
            }  
             
        //利用递归,一层一层写进去..  
            private static void specArr(int[][] arr,int n,int max,int count) {  
                      
                    if(n>0){  
                    int j=0;  
                    for(int i=0;i<(n-1)*4;i++)  
                    {  
                            if (i<n-1)  arr[0+count][i+count]=++max;  
                            else if (i<2*n-2) arr[count+j++][arr.length-1-count]=++max;  
                            else if (i<3*n-3) arr[arr.length-1-count][(j--)+count]=++max;  
                            else if (i<4*n-4) arr[arr.length-1-(j++)-count][0+count]=++max;                          
                    }         
                    if(n==1){arr[arr.length/2][arr.length/2]=max+1 ;}//注意到 当y值为奇数时,会有循环到n=1的情况,需要补进数组最中间值  
                    count++;  
                    n-=2;  
                    specArr(arr,n,max,count);  
                    }  
            }  
          
         
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马