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

    稀疏数组,作为压缩普通数组的一种方式
    import java.util.Arrays;
    
    /**
     *  1、原数组的行数,列数,非0数据个个数
     *  2、所有非0数据个坐标(row,column)
     */
    public class SparseArray {
    
        public static int[][] toSparseArray(int[][] array) {
            // 找到所有非0的数据个数
            int valueCount = 0;
            for (int i = 0 ;i < array.length; i ++) {
                for(int j = 0 ;j < array[i].length; j ++) {
                    int value = array[i][j];
                    if (value != 0) {
                        valueCount++;
                    }
                }
            }
    
            // 初始化稀疏素组第一行数据,记录原始数组的 row/column/valueCount
            int[][] sparseArray = new int[valueCount + 1][3];
            sparseArray[0][0] = array.length;
            sparseArray[0][1] = array[0].length;
            sparseArray[0][2] = valueCount;
    
            // 稀疏素组所有非0数据的坐标
            int index = 0;
            for (int i = 0 ;i < array.length; i ++) {
                for(int j = 0 ;j < array[i].length; j ++) {
                    int value = array[i][j];
                    if (value != 0) {
                        index++;
                        sparseArray[index][0] = i;
                        sparseArray[index][1] = j;
                        sparseArray[index][2] = value;
                    }
                }
            }
            return  sparseArray;
        }
    
        public static int[][] toArray(int[][] sparseArray) {
            //根据第一行数据,初始化原始数组的
            int[][] array = new int[sparseArray[0][0]][sparseArray[0][1]];
            // 赋值
            for (int i = 1 ; i < sparseArray.length; i ++) {
                int row = sparseArray[i][0];
                int column = sparseArray[i][1];
                int value = sparseArray[i][2];
                array[row][column] = value;
            }
            return  array;
        }
    
        public static void main(String[] args) {
            int originalArray[][] = new int [7][8];
            originalArray[0][1] = 8;
            originalArray[1][2] = 9;
            toString(originalArray);
    
            int[][] sparseArray = toSparseArray(originalArray);
            toString(sparseArray);
    
            int[][] array = toArray(sparseArray);
            toString(array);
        }
    
        private static void toString(int[][] array) {
            for (int i = 0 ;i < array.length; i ++) {
                System.out.println(Arrays.toString(array[i]));
            }
        }
    }
  • 相关阅读:
    团队项目——个人工作任务认领
    第八周进度总结
    Scrapy框架安装与使用(基于windows系统)
    《掌握需求过程》阅读笔记四
    《掌握需求过程》阅读笔记三
    《掌握需求过程》阅读笔记二
    《掌握需求过程》阅读笔记(一)
    MapReduce显示最受欢迎的Top10课程(按照课程编号)
    MapReduce处理数据1
    MongoDB Java操作
  • 原文地址:https://www.cnblogs.com/sleepingDogs/p/11140784.html
Copyright © 2011-2022 走看看