您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

java稀疏数组怎么定义和使用

2025/7/11 22:46:01发布24次查看
特点
1、它可以压缩数据,减少内存空间的使用。
过程
2、记录数组元素的坐标和值。
3、稀疏数组有3列,分别是行、列、值,行数是原数组不同值的数加1;
array[0]记录一组行数和列数,以及不同值的数;
然后每行记录一个值在原数组的行列下标记和自己的值。
实例
public static void main(string[] args) {    //创建一个原始的二维数组    //0:没有棋子,1:黑子,2:白子    int chessarr1[][] = new int[11][11];    //下面先固定二维数组的元素,后面可优化~    chessarr1[1][2] = 1;    chessarr1[2][3] = 2;    chessarr1[4][5] = 2;    //输出原始的二维数组:    system.out.println(原始的二维数组:);    printarray(chessarr1);     //下面将二维数组转化为稀疏数组    //1.先遍历二维数组,得到非0数据的个数    int sum = 0;     for (int i = 0; i < 11; i++) {        for (int j = 0; j < 11; j++) {            if (chessarr1[i][j] != 0) {                sum++;            }        }    }     //2.创建对应的稀疏数组    int sparesarr[][] = new int[sum + 1][3];    //给稀疏数组赋值    sparesarr[0][0] = 11;    sparesarr[0][1] = 11;    sparesarr[0][2] = sum;     //遍历二维数组,将非0的值存放在sparesarr中    int count = 0;//count 用于记录是第几个非0数据    for (int i = 0; i < 11; i++) {        for (int j = 0; j < 11; j++) {            if (chessarr1[i][j] != 0) {                count++;                sparesarr[count][0] = i;                sparesarr[count][1] = j;                sparesarr[count][2] = chessarr1[i][j];            }        }    }     //输出稀疏数组的形式    system.out.println();    system.out.println(得到的稀疏数组为:);    printarray(sparesarr);    system.out.println();     //下面将稀疏数组恢复成二维数组    //先读取稀疏数组的第一行元素,根据其数据,创建原始的二维数组    int chessarr2[][] = new int[sparesarr[0][0]][sparesarr[0][1]];      //读取稀疏数组后几行的元素(从第二行开始),并赋值给原始的二维数组即可     for (int i = 1; i < sparesarr.length; i++) {        chessarr2[sparesarr[i][0]][sparesarr[i][1]] = sparesarr[i][2];    }     //输出恢复后的二维数组    system.out.println();    system.out.println(恢复后的二维数组);    printarray(chessarr2);} //打印数组public static void printarray(int[][] array) {    for (int i = 0; i < array.length; i++) {        for (int j = 0; j < array[0].length; j++) {            system.out.printf(%d\t, array[i][j]);        }        system.out.println();    }}
以上就是java稀疏数组怎么定义和使用的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product