稀疏数组

作者: 大旺旺的弟弟小旺旺 | 来源:发表于2021-06-28 07:37 被阅读0次

    稀疏数组:

    一般使用在存在大量相同数据的表格中,存储了许多没有意义的数据。举个例子:一个数组存储了100个数据,有效数据只有10个,就可以使用稀疏数组存储。
    稀疏数组处理的方法:

    • 记录行和列个数
    • 将不同值元素的行列 以及数组存储在一个小的数组中 ,缩小存储数据占用的空间。
    0  0  0  0  0  0  
    1  0  0  5  3  0
    4  0  0  2  2  9
    0  0  0  0  0  0   
    

    我们的存储方式

    • 几行几列
    • 数据在哪里,数据是多少?

    我们创建一个数组就存储这些数据,所有我们需要提起的计算有多少个有效数字。然后创建出arr[n+1][3]的数组。

    代码实现

       public void ArrayToSparseArray(int [][]arr){
           int num = totalChar(arr,0);  //一共多少个数据
            //创建数组
            int sparseArr[][] = new int[num+1][3];  //创建存放数据的数组
            sparseArr[0][0] = arr.length;
            sparseArr[0][1] = arr[0].length;  //00 位置 存储的是行个数,列个数,以及数据个数。
            sparseArr[0][2] = num;
            int iIndex = 0;
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[0].length; j++) {
                    if (arr[i][j]!=0){
                        iIndex ++;
                        sparseArr[iIndex][0] = i;
                        sparseArr[iIndex][1] = j;
                        sparseArr[iIndex][2] = arr[i][j];
                    }
                }
            }
        }
    
        public int totalChar(int arr[][],int t){
            int num = 0;
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[0].length; j++) {
                    if (arr[i][j] == t){
                        num++;
                    }
                }
            }
            return num;
        }
    
        public void  huifu(int arr[][]){
            int arrTemp[][] = new int[arr[0][0]][arr[0][1]];
            for (int i = 1; i < arr.length; i++) {
                arrTemp[arr[1][0]][arr[1][1]] = arr[1][2];
            }
        }
    

    代码很简单没什么可以说的。

    相关文章

      网友评论

        本文标题:稀疏数组

        本文链接:https://www.haomeiwen.com/subject/avqfultx.html