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

    //稀疏数组
    public class ArrayDemo05 {
        public static void main(String[] args) {
    
            int[][] arr = new int[11][11];
            arr[1][2] = 1;
            arr[2][3] = 2;
            System.out.println("原始数组:");
            for (int[] ints : arr) {
                for (int anInt : ints) {
                    System.out.print(anInt + "	");
                }
                System.out.println();
            }
            System.out.println("========================");
            int count = 0;//用来记数
    
            for (int[] ints : arr) {
                for (int anInt : ints) {
                    if (anInt != 0) {
                        count++;//每当数组有一个值不为0,count就+1
                    }
                }
            }
            System.out.println("有效数值:" + count);//原始数组里有两个值不为0
    
    
            int[][] arr2 = new int[count + 1][3];//声明一个新数组作为稀疏数组  稀疏数组 是三行三列
            //                 第一列(行)    第二列(列)    第三列(值)
            //第一行记录(统计) 一共多少行      多少列       多少个有效值
            //第二行记录(位置)   第几行       第几列         哪个值
            arr2[0][0] = 11;
            arr2[0][1] = 11;
            arr2[0][2] = count;
    
    
            int sum = 0;
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    if (arr[i][j] != 0) {
                        sum++;
                        arr2[sum][0] = i;//i代表第几行
                        arr2[sum][1] = j;//j代表第几列
                        arr2[sum][2] = arr[i][j];//arr[i][j]代表具体的值
                    }
                }
            }
            System.out.println("稀疏数组:");
            for (int[] ints : arr2) {
                for (int anInt : ints) {
                    System.out.print(anInt+"	");
                }
                System.out.println();
            }
    
            System.out.println("==================");
            System.out.println("还原稀疏数组:");
    
            int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];
    
            for (int i = 1; i < arr2.length; i++) {
                for (int j = 0; j < arr2[i].length; j++) {
                    arr3[arr2[i][0]][arr2[i][1]] = arr2[i][j];
                }
            }
            System.out.println("======================");
            for (int[] ints : arr3) {
                for (int anInt : ints) {
                    System.out.print(anInt+"	");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    我正在使用的 Gnome 扩展列表(不定期更新)
    PHP中 <<< A ··· A 是什么意思
    Java 中 this 的作用
    Java 类成员变量中 public, private, protected, default 权限区别
    虫师github
    在线学习的网站
    软件测试博客
    乙醇公开课视频
    教你如何写框架------元素管理篇
    自动化测试与持续集成方案--接口测试
  • 原文地址:https://www.cnblogs.com/shenyueshuo/p/12963839.html
Copyright © 2011-2022 走看看