稀疏数组

稀疏数组用于大数组中存在少量有效数字,其余数字为0时,记录有效数据的坐标与数据值
第一行为行数,列数,有效值

public class Array_demo08 {
    static void main(String[] args) {
        //创建原始数组,并输入数值
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //输出原始数组
        System.out.println("输出原始数组");

        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }
        System.out.println("=========================");

        //转换为稀疏数组
        //1.获取有效值的数量
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j] != 0) {
                    count++;
                }
            }
        }
        //2.创建稀疏数组,并输入对应值
        int[][] array2 = new int[count + 1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = count;
        int k = 1;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j] != 0) {
                    array2[k][0] = i;
                    array2[k][1] = j;
                    array2[k][2] = array1[i][j];
                    k++;
                }
            }
        }
        //输出稀疏数组
        for (int i = 0; i < array2.length; i++) {
            System.out.print(array2[i][0] + "\t"
                    + array2[i][0] + "\t"
                    + array2[i][1] + "\t");
            System.out.println();
        }
        System.out.println("=======================");

        //还原稀疏数组
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j] + "\t");
            }
            System.out.println();
        }

    }
posted on 2026-02-02 17:17  AAA神鹰  阅读(1)  评论(0)    收藏  举报