黑马程序员技术交流社区
标题:
入学测试题9
[打印本页]
作者:
迷途羔羊
时间:
2015-8-31 00:30
标题:
入学测试题9
//螺旋排序,二维数组
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);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2