稀疏数组 - 二维数组转稀疏数组

public class SparseArray {    public static void main(String[] args) {        //1 先定义一个二维数组,11x11的棋盘,0表示没有棋子,1表示白棋,2表示黑棋        int[][] chessboard = initChessboard();        System.out.println("======================初始化二维数组======================");        for (int[] row : chessboard) {            for (int data : row) {                System.out.printf("%d\t", data);            }            System.out.println();        }        //2 转稀疏数组        int[][] sparseArray = transToSparseArray(chessboard);        System.out.println("======================转化后的稀疏数组======================");        for (int[] row : sparseArray) {            for (int data : row) {                System.out.printf("%d\t", data);            }            System.out.println();        }    }    private static int[][] transToSparseArray(int[][] chessboard) {        // 1. 获取二维数组有多少个值        int sum = getSum(chessboard);        // 2. 创建稀疏数组        int[][] sparseArray = initSparseArray(sum, chessboard);        // 3. 给稀疏数组赋值        assembleSparseArray(sparseArray, chessboard);        return sparseArray;    }    private static void assembleSparseArray(int[][] sparseArray, int[][] chessboard) {        int count = 0;        int row = chessboard.length;        int col = chessboard[0].length;        for (int i = 0; i < row; i  ) {            for (int j = 0; j < col; j  ) {                if (chessboard[i][j] != 0) {                    count  ;                    sparseArray[count][0] = i;                    sparseArray[count][1] = j;                    sparseArray[count][2] = chessboard[i][j];                }            }        }    }    private static int[][] initSparseArray(int sum, int[][] chessboard) {        int[][] sparseArray = new int[sum   1][3];        sparseArray[0][0] = chessboard.length;        sparseArray[0][1] = chessboard[0].length;        sparseArray[0][2] = sum;        return sparseArray;    }    private static int getSum(int[][] chessboard) {        int sum = 0;        int row = chessboard.length;        int col = chessboard[0].length;        for (int i = 0; i < row; i  ) {            for (int j = 0; j < col; j  ) {                if (chessboard[i][j] != 0) {                    sum  ;                }            }        }        return sum;    }    private static int[][] initChessboard() {        int[][] chessboard = new int[11][11];        chessboard[1][2] = 1;        chessboard[2][3] = 2;        return chessboard;    }}
======================初始化二维数组======================0000000000000100000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000======================转化后的稀疏数组======================11112121232Process finished with exit code 0

来源:https://www.icode9.com/content-4-816751.html

(0)

相关推荐

  • 动态内存分配连续内存空间的二维数组

    可以直接使用一维数组来模拟二维数组,下面的代码就是在此基础上,用一个二级指针指向一维数组的相应地方,详见代码 #include <stdio.h> #include <malloc. ...

  • JavaScript数组 - 二维数组

    JavaScript二维数组 什么是二维数组? 注意:所谓的二维数组,就是在数组中元素还为数组,如果再有数组也可称为三维数组 我们通过一个例题来进行讲解 通过循环按执行顺序为一个5x5的二维数组a赋1 ...

  • VB中怎样对一个二维数组的行进行操作

    通常,数学上的行列式或者矩阵,用二维数组来存放数据,二维数组的第1维,就是映射矩阵的行,二维数组的第2维,就是映射矩阵的列. 例如: dim d(1 To 3,1 To 4) As Integer 对 ...

  • 如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  • c++指针数组与二维数组的最大区别

    下面随笔是关于指针数组说明及与二维数组的最大区别. 指针数组 数组的元素是指针型 例 利用指针数组存放矩阵 1 #include 2 using namespace std; 3 int main() ...

  • 假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单的客车售票系统。

    具体要求为: 使用一个二维数组记录客车售票系统中的所有座位号,并在每个座位号上都显示有票,然后用户输入一个坐标位置,按Enter键,即可将该座位号显示为已售. 首先我定义的输入格式为:1,2 个人认为 ...

  • 二维数组

    如果数组元素又是数组,则称为多维数组,常用的是二维数组. 二维数组可以看成由两个一维数组组成,所以很多东西与一维数组类似,如其声明的方法.可进行的运算等等. 1.声明二维数组 数组类型数组名[][]: ...

  • java学习——25.二维数组

    如果数组元素又是数组,则称为多维数组,常用的是二维数组. 二维数组可以看成由两个一维数组组成,所以很多东西与一维数组类似,如其声明的方法.可进行的运算等等. 1.声明二维数组 数组类型数组名[][]: ...

  • 表格转换,用函数做就是很难!(二维数组的万金油)

    小伙伴们好啊,今天又要分享一个表格转换的问题.其实用函数处理表格转换的问题,确实不是一个好的选择,因为会比较复杂.用pq处理表格转换的问题就比较容易.但是我现在只能分享函数的用法,因为pq我也只会一点 ...