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();
            }
        }
    }
  • 相关阅读:
    01-文件系统
    适配器模式,新老系统兼容
    01-Entity FrameWork如何控制数据的变化
    .Net实战之反射操作篇
    .Net实战之反射相关类之间的人体经络关系
    .Net实战之反射外卖计费
    [转]UINavigationController 返回的方法汇总
    [转]AFNetWorking使用笔记
    vue----子组件引用vux popup mask遮罩在最上层解决办法 z-index问题
    vue系列---vue项目(已安装vuex)中引入jquery
  • 原文地址:https://www.cnblogs.com/shenyueshuo/p/12963839.html
Copyright © 2011-2022 走看看