算法

稀疏数组

2021-06-28  本文已影响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];
        }
    }

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

上一篇下一篇

猜你喜欢

热点阅读