zoukankan      html  css  js  c++  java
  • java数组之稀疏数组

    1,稀疏数组的介绍

    2,练习

    3,编码

    package array;
    
    /*
    稀疏数组 --------------- 数据结构
     */
    public class Demo08 {
        public static void main(String[] args) {
    //        创建一个二维数组;11*11   0:没有棋子   1:黑棋    2:白棋
    
            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 + "	");
                }
                System.out.println();
            }
    
            System.out.println("======================");
    //        转换为稀疏数组保存
    //        获取有效值 的个数 ;
            int sum = 0;
            for (int i = 0; i < 11; i++) {
                for (int j = 0; j < 11; j++) {
                    if (array1[i][j] != 0) {
                        sum++;
    
                    }
                }
            }
            System.out.println("获取有效值 的个数" + sum);
    
    
    //    创建一个稀疏数组
            int[][] array2 = new int[sum + 1][3];
    
            array2[0][0] = 11;
            array2[0][1] = 11;
            array2[0][2] = sum;
    
    //      遍历 二维数组 ,将非0的值 ,存放到稀疏数组中
            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++;
                        array2[count][0] = i;
                        array2[count][1] = j;
                        array2[count][2] = array1[i][j];
    
                    }
                }
            }
    
    //输出稀疏数组
            System.out.println("输出稀疏数组");
            for (int i = 0; i < array2.length; i++) {
                System.out.println(array2[i][0] + "	"
                        + array2[i][1] + "	"
                        + array2[i][2] + "	");
            }
    
            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[] ints : array3) {
                for (int anInt : ints) {
                    System.out.print(anInt + "	");
                }
                System.out.println();
            }
        }
    }
    
    

    4,运行结果

    输出原始的数组
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	1	0	0	0	0	0	0	0	0	
    0	0	0	2	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    ======================
    获取有效值 的个数2
    输出稀疏数组
    11	11	2	
    1	2	1	
    2	3	2	
    ====================
    稀疏数组还原
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	1	0	0	0	0	0	0	0	0	
    0	0	0	2	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	
    
    Process finished with exit code 0
    
    
  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/d534/p/15081109.html
Copyright © 2011-2022 走看看