码迷,mamicode.com
首页 > 编程语言 > 详细

稀疏数组

时间:2019-08-19 23:01:39      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:图片   i++   ret   ash   public   pre   bsp   com   ima   

技术图片

如果数组中分布有大量的元素 0,即非 0 元素非常少,这类数组称为稀疏数组。

压缩存储稀疏数组的方法是:只存储数组中的非 0 元素,与前面的存储方法不同数组,矩阵非 0 元素的存储需同时存储该元素所在数组

 

/**
     * 数组转稀疏数组
     */
    public static int[][] Test1(int[][] nums) {
        int count = 0;//计数器
        int row = 0;//行
        int col = 0;//列
        for (int i = 0; i < nums.length; i++) {
            int[] items = nums[i];
            col = items.length;
            for (int j = 0; j < items.length; j++) {
                if (nums[i][j] != 0) {
                    count++;
                    row = nums.length;

                }

            }
        }
        int[][] zipArr = new int[row + 1][3];
        zipArr[0][0] = row;
        zipArr[0][1] = col;
        zipArr[0][2] = count;
        count = 0;
        for (int i = 0; i < nums.length; i++) {
            int[] items = nums[i];
            col = items.length;
            for (int j = 0; j < items.length; j++) {
                if (nums[i][j] != 0) {
                    count++;
                    zipArr[count][0] = i;
                    zipArr[count][1] = j;
                    zipArr[count][2] = nums[i][j];

                }

            }
        }
        return zipArr;
    }

    /**
     * 稀疏数组转数组
     */
    public static int[][] Test2(int[][] item) {
        int[][] ars = new int[item[0][0]][item[0][1]];

        for (int i = 1; i < ars.length+1; i++) {
           ars[item[i][0]][item[i][1]]=item[i][2];
        }

        return ars;
    }

  

  输出

3	3	3	
0	0	1	
1	2	5	
2	0	3	

1	0	0	
0	0	5	
3	0	0	

  

稀疏数组

标签:图片   i++   ret   ash   public   pre   bsp   com   ima   

原文地址:https://www.cnblogs.com/lIllIll/p/11376657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!