数组的螺旋打印

标签: 数组的螺旋打印 螺旋打印算法
37人阅读 评论(0) 收藏 举报
分类:

(一)问题,将数组按照如下方式进行打印【-->就是螺旋打印 算法】

  代码:

public class TestSpriralPrinting {
    public static void main(String[] args) {


        System.out.print("请输入一个整数(1~20): ");
        Scanner scanner = new Scanner(System.in);
        int inputNum = scanner.nextInt();
        System.out.println("inputNum: "+inputNum);
        int[][] arr = TestSpriralPrinting.getData(inputNum);//是一个20*20大小的二维数组。

        //只打印了我们需要的部分
        for (int i = 0; i < inputNum; i++) {
            for (int j = 0; j < inputNum; j++) {//打印数字前加空格,使整体对齐。
                 // 设置成 4个格子 为一个数字长度。
                if (10 > arr[i][j]) System.out.print("  " + arr[i][j] + " ");//2空格+1位数字+1空格=4
                else if (100 > arr[i][j]) System.out.print(" " + arr[i][j] + " ");//1空格+2位数字+1空格=4
                else System.out.print(arr[i][j] + " ");//3位数字+1空格=4
                if (inputNum - 1 == j) System.out.println();//进行换行
            }
        }
    }
     //将数字按照 螺旋顺序存放进去。【分成  上  右  下  左 这四个部分  依次轮圈】
    public static int[][] getData(int number) {
        // 创建一个20*20的二维数组,用于放置数据,并返回
        int[][] arrs = new int[20][20];//数组中 第一位用num表示,先初始化为1
        int num = 1;
        int i = 0;//表示数组中第一个数值
        int j = 0;//表示数组中第二个数值
        // 每次循环四边组成一个圈,多次循环之后内嵌圈
        for (int k = 0; k <= number / 2; ++k) {//圈数--->遍历多少次--->相当于  有 number/2这么多层。
             //赋值 上边(控制好结束条件)
            for (j = k, i = k; j < number - k; ++j) {
                arrs[i][j] = num;
                num++;
            }
            //赋值 右边 (控制好结束条件)
            for (j = j - 1, i = i + 1; i < number - k; ++i) {
                arrs[i][j] = num;
                num++;
            }
            //赋值下边(控制好结束条件)
            for (j = j - 1, i = i - 1; j > k - 1; --j) {
                arrs[i][j] = num;
                num++;
            }
            //赋值左边(控制好结束条件)
            for (j = j + 1, i = i - 1; i > k; --i) {
                arrs[i][j] = num;
                num++;
            }
        }
        return arrs;
    }
}
查看评论

用java实现螺旋数组

接收数组的行数和列数,返回正序和倒序的螺旋数组(java实现)
  • baokx
  • baokx
  • 2014-09-03 17:27:58
  • 1540

顺时针打印二维数组(螺旋输出数组)

题目:给定一个数组,将该数组从第一个元素开始顺时针打印出来。分析:先考虑打印周围一圈的问题,然后可以使用递归求解,直到最后全都打印完为止。 代码如下:package problem2;/** * ...
  • hutongling
  • hutongling
  • 2017-03-19 17:44:43
  • 2129

螺旋式打印一个二维数组

问题描述:螺旋式打印一个二维数组。如 1     16     3     2     17 8     6       4     3     23   2     5       7     8 ...
  • lonelywinter340
  • lonelywinter340
  • 2008-11-13 17:52:00
  • 7035

Java 螺旋数组的实现方式-一个循环实现哦

随着编程的学习和工作,感触越来越深的
  • HYM1987
  • HYM1987
  • 2014-05-10 22:27:19
  • 1795

用二维数组打印螺旋方阵 JAVA入门之数组

  • 2015年05月20日 00:26
  • 1KB
  • 下载

【练习1】输出一个螺旋数组,可以很好地理解数组和指针的使用

Input array size N (1~20) Using Two-Dimensional array 输入数组大小(1 - 20): 输出结果: 静态数组版: #include int ...
  • qq_27183003
  • qq_27183003
  • 2015-11-07 08:54:39
  • 2662

黑马程序员——用二维数组打印螺旋方阵和螺旋矩阵

------- android培训、java培训、期待与您交流! ---------- ————————————————————————————————————————————————————————...
  • zz1017161726
  • zz1017161726
  • 2015-04-26 15:42:34
  • 1970

Java 实现顺时针螺旋二维数组输出

看到一道有点意思的逻辑算法题,便着手实现一下。打印 N*N顺时针螺旋数组,规律如下:// 1 2 3 4 5 // 16 ...
  • yyh352091626
  • yyh352091626
  • 2016-08-18 11:24:14
  • 4022

C#打印螺旋数组

using System; namespace 打印螺旋数组 { class Program { static void Main(string[] args) ...
  • lucky51222
  • lucky51222
  • 2015-09-09 16:06:51
  • 734
    个人资料
    持之以恒
    等级:
    访问量: 1178
    积分: 488
    排名: 10万+
    文章存档
    最新评论