螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。利用java实现的螺旋矩阵,当输入N之后,会自动打印出螺旋矩阵。
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 |
代码实现:
public class Spiralmatrix {
public static int N =5;//定义要插入的矩阵阶数
public static int[][] a = new int[N ][N ];//定义要插入的矩阵(二维数组)
public static int cnt;//插入的数字(递增)
//往矩阵中插入数据
public static void spiralInsect(int[][] a){
int loop,i,j;
int n=N;
for(loop=0;loop<N/2;loop++){
//上:i:loop j:i-->n-2
for(j=loop;j<n-1;j++){
a[loop][j]=++cnt;
}
//右:i:loop-->n-2 j:n-1
for(j=loop;j<n-1;j++){
a[j][n-1]=++cnt;
}
//下:i:n-1 j:n-1-->loop+1
for(j=n-1;j>loop;j--){
a[n-1][j]=++cnt;
}
//左:i:n-1-->loop+1 j:loop
for(i=n-1;i>loop;i--){
a[i][loop]=++cnt;
}
n--;
}
//判断插入的矩阵阶数是基数还是偶数,决定是否需要给最中间填充数据
if(N %2!= 0){
a[N/2][N/2]=N *N;
}
}
public static void main(String[] args) {
spiralInsect(a);
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println(" ");
}
}
}
打印结果: